|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectedu.cuny.cat.comm.ListenableConnection<M>
M
- the type of messages that can be transmitted through the connection.public class ListenableConnection<M extends Message>
The class wraps the usual querying-based Connection
to support
actively pushing Message
to a listener.
It should be used in the following way:
Connection<Message> conn; ... ReactiveConnection<Message> reactiveConn = ListenableConnection.makeReactiveConnection(conn); reactiveConn.setListener(listener); reactiveConn.start(); ... reactiveConn.stop(); reactiveConn.setListener(null); // (optional) ...
Field Summary | |
---|---|
protected ProactiveConnection<M> |
connection
|
protected ConnectionListener<M> |
listener
|
protected java.lang.Thread |
thread
|
static long |
THREAD_STACK_SIZE
|
protected static java.lang.ThreadGroup |
threadGroup
|
Constructor Summary | |
---|---|
ListenableConnection(ProactiveConnection<M> connection)
|
Method Summary | ||
---|---|---|
void |
close()
TODO: not safe to simply set listener null. |
|
ConnectionListener<M> |
getListener()
|
|
java.lang.String |
getLocalAddressInfo()
|
|
CatpMessage |
getMessage()
|
|
java.lang.String |
getRemoteAddressInfo()
|
|
java.lang.Thread |
getThread()
This is needed only for debug purpose. |
|
boolean |
isClosed()
checks whether the connection is closed or not. |
|
static
|
makeReactiveConnection(Connection<T> conn)
wraps a ProactiveConnection with ListenableConnection if
necessary to make it support registering-and-listening message passing,
i.e. |
|
void |
open()
opens the connection before sending or receiving any message. |
|
void |
run()
loops to attempt to read messages and notifies the listener of the arrival. |
|
void |
sendMessage(M msg)
sends a Message through this connection. |
|
void |
setListener(ConnectionListener<M> listener)
|
|
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final long THREAD_STACK_SIZE
protected ConnectionListener<M extends Message> listener
protected ProactiveConnection<M extends Message> connection
protected java.lang.Thread thread
protected static java.lang.ThreadGroup threadGroup
Constructor Detail |
---|
public ListenableConnection(ProactiveConnection<M> connection)
Method Detail |
---|
public CatpMessage getMessage() throws CatException
CatException
public void sendMessage(M msg) throws CatException
Connection
Message
through this connection.
sendMessage
in interface Connection<M extends Message>
msg
- message to be sent.
CatException
public void run()
run
in interface java.lang.Runnable
ConnectionListener.messageArrived(Message)
public void setListener(ConnectionListener<M> listener)
setListener
in interface ReactiveConnection<M extends Message>
public ConnectionListener<M> getListener()
getListener
in interface ReactiveConnection<M extends Message>
public void open() throws ConnectionException
Connection
open
in interface Connection<M extends Message>
ConnectionException
public void close() throws ConnectionException
close
in interface Connection<M extends Message>
ConnectionException
public boolean isClosed()
Connection
isClosed
in interface Connection<M extends Message>
public java.lang.String getLocalAddressInfo()
getLocalAddressInfo
in interface Connection<M extends Message>
public java.lang.String getRemoteAddressInfo()
getRemoteAddressInfo
in interface Connection<M extends Message>
public static <T extends Message> ReactiveConnection<T> makeReactiveConnection(Connection<T> conn)
ProactiveConnection
with ListenableConnection
if
necessary to make it support registering-and-listening message passing,
i.e. an instance of ReactiveConnection
.
public java.lang.Thread getThread()
connection
and call listener
to process messages.public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |