Package org.jgroups.protocols
Class STOMP
java.lang.Object
org.jgroups.stack.Protocol
org.jgroups.protocols.STOMP
- All Implemented Interfaces:
Runnable
Protocol which provides STOMP (http://stomp.codehaus.org/) support. Very simple implementation, with a
one-thread-per-connection model. Use for a few hundred clients max.
The intended use for this protocol is pub-sub with clients which handle text messages, e.g. stock updates,
SMS messages to mobile clients, SNMP traps etc.
Note that the full STOMP protocol has not yet been implemented, e.g. transactions are not supported.
todo: use a thread pool to handle incoming frames and to send messages to clients
todo: add PING to test health of client connections
- Since:
- 2.11
- Author:
- Bela Ban
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumclassClass which handles a connection to a clientstatic classstatic enumstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Threadprotected InetAddressprotected final List<STOMP.Connection> protected Stringprotected Stringprotected booleanprotected booleanprotected Addressstatic final byteprotected intprotected booleanprotected ServerSocketprotected final ConcurrentMap<String, Set<STOMP.Connection>> protected View -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAn event is to be sent down the stack.protected Stringintintprotected voidhandleView(View view) static STOMP.Framevoidrun()voidstart()This method is called on aChannel.connect(String).voidstop()This method is called on aChannel.disconnect().An event was received from the layer below.Methods inherited from class org.jgroups.stack.Protocol
destroy, downThreadEnabled, dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getId, getLevel, getName, getProperties, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getValue, init, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStats, setDownProtocol, setErgonomics, setId, setLevel, setProperties, setPropertiesInternal, setProperty, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, statsEnabled, upThreadEnabled
-
Field Details
-
bind_addr
-
endpoint_addr
-
port
protected int port -
exact_destination_match
protected boolean exact_destination_match -
send_info
protected boolean send_info -
forward_non_client_generated_msgs
protected boolean forward_non_client_generated_msgs -
local_addr
-
srv_sock
-
endpoint
-
acceptor
-
connections
-
endpoints
-
view
-
subscriptions
-
NULL_BYTE
public static final byte NULL_BYTE- See Also:
-
-
Constructor Details
-
STOMP
public STOMP()
-
-
Method Details
-
getNumConnections
public int getNumConnections() -
getNumSubscriptions
public int getNumSubscriptions() -
getSubscriptions
-
getEndpoints
-
start
Description copied from class:ProtocolThis method is called on aChannel.connect(String). Starts work. Protocols are connected and queues are ready to receive events. Will be called from bottom to top. This call will replace the START and START_OK events.- Overrides:
startin classProtocol- Throws:
Exception- Thrown if protocol cannot be started successfully. This will cause the ProtocolStack to fail, soChannel.connect(String)will throw an exception
-
stop
public void stop()Description copied from class:ProtocolThis method is called on aChannel.disconnect(). Stops work (e.g. by closing multicast socket). Will be called from top to bottom. This means that at the time of the method invocation the neighbor protocol below is still working. This method will replace the STOP, STOP_OK, CLEANUP and CLEANUP_OK events. The ProtocolStack guarantees that when this method is called all messages in the down queue will have been flushed -
run
public void run() -
down
Description copied from class:ProtocolAn event is to be sent down the stack. The layer may want to examine its type and perform some action on it, depending on the event's type. If the event is a message MSG, then the layer may need to add a header to it (or do nothing at all) before sending it down the stack usingdown_prot.down(). In case of a GET_ADDRESS event (which tries to retrieve the stack's address from one of the bottom layers), the layer may need to send a new response event back up the stack usingup_prot.up(). -
up
Description copied from class:ProtocolAn event was received from the layer below. Usually the current layer will want to examine the event type and - depending on its type - perform some computation (e.g. removing headers from a MSG event type, or updating the internal membership list when receiving a VIEW_CHANGE event). Finally the event is either a) discarded, or b) an event is sent down the stack usingdown_prot.down()or c) the event (or another event) is sent up the stack usingup_prot.up(). -
readFrame
- Throws:
IOException
-
handleView
-
getAllEndpoints
-
broadcastEndpoint
protected void broadcastEndpoint()
-