| java.lang.Object org.jgroups.Channel org.jgroups.JChannel
All known Subclasses: org.jgroups.mux.MuxChannel,
JChannel | public class JChannel extends Channel (Code) | | JChannel is a pure Java implementation of Channel.
When a JChannel object is instantiated it automatically sets up the
protocol stack.
Properties
Properties are used to configure a channel, and are accepted in
several forms; the String form is described here.
A property string consists of a number of properties separated by
colons. For example:
"<prop1>(arg1=val1):<prop2>(arg1=val1;arg2=val2):<prop3>:<propn>"
Each property relates directly to a protocol layer, which is
implemented as a Java class. When a protocol stack is to be created
based on the above property string, the first property becomes the
bottom-most layer, the second one will be placed on the first, etc.:
the stack is created from the bottom to the top, as the string is
parsed from left to right. Each property has to be the name of a
Java class that resides in the
org.jgroups.protocols package.
Note that only the base name has to be given, not the fully specified
class name (e.g., UDP instead of org.jgroups.protocols.UDP).
Each layer may have 0 or more arguments, which are specified as a
list of name/value pairs in parentheses directly after the property.
In the example above, the first protocol layer has 1 argument,
the second 2, the third none. When a layer is created, these
properties (if there are any) will be set in a layer by invoking
the layer's setProperties() method
As an example the property string below instructs JGroups to create
a JChannel with protocols UDP, PING, FD and GMS:
"UDP(mcast_addr=228.10.9.8;mcast_port=5678):PING:FD:GMS"
The UDP protocol layer is at the bottom of the stack, and it
should use mcast address 228.10.9.8. and port 5678 rather than
the default IP multicast address and port. The only other argument
instructs FD to output debug information while executing.
Property UDP refers to a class
org.jgroups.protocols.UDP ,
which is subsequently loaded and an instance of which is created as protocol layer.
If any of these classes are not found, an exception will be thrown and
the construction of the stack will be aborted.
author: Bela Ban version: $Id: JChannel.java,v 1.106.2.1 2006/12/04 22:47:16 vlada Exp $ |
Inner Class :class CloserThread extends Thread | |
Constructor Summary | |
protected | JChannel(boolean no_op) | public | JChannel() Constructs a JChannel instance with the protocol stack
specified by the DEFAULT_PROTOCOL_STACK member. | public | JChannel(File properties) Constructs a JChannel instance with the protocol stack
configuration contained by the specified file. | public | JChannel(Element properties) Constructs a JChannel instance with the protocol stack
configuration contained by the specified XML element. | public | JChannel(URL properties) Constructs a JChannel instance with the protocol stack
configuration indicated by the specified URL. | public | JChannel(String properties) Constructs a JChannel instance with the protocol stack
configuration based upon the specified properties parameter. | protected | JChannel(ProtocolStackConfigurator configurator) Constructs a JChannel instance with the protocol stack
configuration contained by the protocol stack configurator parameter. | public | JChannel(Object properties) Creates a new JChannel with the protocol stack as defined in the properties
parameter. |
Method Summary | |
protected void | _close(boolean disconnect, boolean close_mq) Disconnects and closes the channel. | public void | blockOk() Called to acknowledge a block() (callback in MembershipListener or
BlockEvent received from call to receive() ). | protected void | checkClosed() | protected void | checkNotConnected() | public synchronized void | close() Destroys the channel. | final public void | closeMessageQueue(boolean flush_entries) | public synchronized void | connect(String cluster_name) Connects the channel to a group.
If the channel is already connected, an error message will be printed to the error log.
If the channel is closed a ChannelClosed exception will be thrown.
This method starts the protocol stack by calling ProtocolStack.start,
then it sends an Event.CONNECT event down the stack and waits to receive a CONNECT_OK event.
Once the CONNECT_OK event arrives from the protocol stack, any channel listeners are notified
and the channel is considered connected.
Parameters: cluster_name - A String denoting the group name. | public synchronized boolean | connect(String cluster_name, Address target, String state_id, long timeout) | Address | determineCoordinator() | public synchronized void | disconnect() Disconnects the channel if it is connected. | public void | down(Event evt) | public String | dumpQueue() | public Map | dumpStats() Returns a map of statistics of the various protocols and of the channel itself.
Map. | public String | dumpTimerQueue() | public void | enableStats(boolean stats) | public boolean | flushSupported() | public boolean | getAllStates(Vector targets, long timeout) Retrieves the current group state. | public String | getChannelName() | public String | getClusterName() | static Object | getEvent(Event evt) | public Address | getLocalAddress() | protected Log | getLog() | public int | getNumMessages() | public int | getNumberOfTasksInTimer() | public Object | getOpt(int option) returns the value of an option. | public String | getProperties() returns the protocol stack configuration in string format. | public ProtocolStack | getProtocolStack() Returns the protocol stack. | public long | getReceivedBytes() | public long | getReceivedMessages() | public long | getSentBytes() | public long | getSentMessages() | public boolean | getState(Address target, long timeout) Retrieves the current group state. | public boolean | getState(Address target, String state_id, long timeout) Retrieves a substate (or partial state) from the target.
Parameters: target - State provider. | public View | getView() Returns the current view. | final protected void | init(ProtocolStackConfigurator configurator) | public boolean | isConnected() | public boolean | isOpen() | public synchronized void | open() Opens the channel. | public Object | peek(long timeout) Just peeks at the next message, view or block. | public String | printProtocolSpec(boolean include_properties) Returns a pretty-printed form of all the protocols. | public Object | receive(long timeout) Blocking receive method.
This method returns the object that was first received by this JChannel and that has not been
received before. | public void | resetStats() | public void | returnState(byte[] state) Called by the application is response to receiving a getState() object when
calling receive() . | public void | returnState(byte[] state, String state_id) | public void | send(Message msg) Sends a message through the protocol stack. | public void | send(Address dst, Address src, Serializable obj) | public void | setOpt(int option, Object value) Sets a channel option. | public synchronized void | shutdown() | public boolean | startFlush(long timeout, int numberOfAttempts, boolean automatic_resume) Will perform a flush of the system, ie. | public boolean | startFlush(long timeout, boolean automatic_resume) Will perform a flush of the system, ie. | public boolean | statsEnabled() | public void | stopFlush() | public String | toString(boolean details) | public void | up(Event evt) Callback method
Called by the ProtocolStack when a message is received. |
DEFAULT_PROTOCOL_STACK | final public static String DEFAULT_PROTOCOL_STACK(Code) | | The default protocol stack used by the default constructor.
|
closed | protected boolean closed(Code) | | |
closer | protected CloserThread closer(Code) | | Thread responsible for closing a channel and potentially reconnecting to it (e.g., when shunned).
|
connected | protected boolean connected(Code) | | |
log | final protected Log log(Code) | | |
sent_msgsreceived_msgssent_bytesreceived_bytes | protected long sent_msgsreceived_msgssent_bytesreceived_bytes(Code) | | |
stats | protected boolean stats(Code) | | Collect statistics
|
JChannel | protected JChannel(boolean no_op)(Code) | | Used by subclass to create a JChannel without a protocol stack, don't use as application programmer
|
JChannel | public JChannel() throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
specified by the DEFAULT_PROTOCOL_STACK member.
throws: ChannelException - if problems occur during the initialization ofthe protocol stack. |
JChannel | public JChannel(File properties) throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
configuration contained by the specified file.
Parameters: properties - a file containing a JGroups XML protocol stackconfiguration. throws: ChannelException - if problems occur during the configuration orinitialization of the protocol stack. |
JChannel | public JChannel(Element properties) throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
configuration contained by the specified XML element.
Parameters: properties - a XML element containing a JGroups XML protocol stackconfiguration. throws: ChannelException - if problems occur during the configuration orinitialization of the protocol stack. |
JChannel | public JChannel(URL properties) throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
configuration indicated by the specified URL.
Parameters: properties - a URL pointing to a JGroups XML protocol stackconfiguration. throws: ChannelException - if problems occur during the configuration orinitialization of the protocol stack. |
JChannel | public JChannel(String properties) throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
configuration based upon the specified properties parameter.
Parameters: properties - an old style property string, a string representing asystem resource containing a JGroups XML configuration,a string representing a URL pointing to a JGroups XMLXML configuration, or a string representing a file namethat contains a JGroups XML configuration. throws: ChannelException - if problems occur during the configuration andinitialization of the protocol stack. |
JChannel | protected JChannel(ProtocolStackConfigurator configurator) throws ChannelException(Code) | | Constructs a JChannel instance with the protocol stack
configuration contained by the protocol stack configurator parameter.
All of the public constructors of this class eventually delegate to this
method.
Parameters: configurator - a protocol stack configurator containing a JGroupsprotocol stack configuration. throws: ChannelException - if problems occur during the initialization ofthe protocol stack. |
JChannel | public JChannel(Object properties) throws ChannelException(Code) | | Creates a new JChannel with the protocol stack as defined in the properties
parameter. an example of this parameter is
"UDP:PING:FD:STABLE:NAKACK:UNICAST:FRAG:FLUSH:GMS:VIEW_ENFORCER:STATE_TRANSFER:QUEUE"
Other examples can be found in the ./conf directory
Parameters: properties - the protocol stack setup; if null, the default protocol stack will be used.The properties can also be a java.net.URL object or a string that is a URL spec.The JChannel will validate any URL object and String object to see if they are a URL.In case of the parameter being a url, the JChannel will try to load the xml from there.In case properties is a org.w3c.dom.Element, the ConfiguratorFactory will parse theDOM tree with the element as its root element. |
_close | protected void _close(boolean disconnect, boolean close_mq)(Code) | | Disconnects and closes the channel.
This method does the folloing things
- Calls
this.disconnect if the disconnect parameter is true
- Calls
Queue.close on mq if the close_mq parameter is true
- Calls
ProtocolStack.stop on the protocol stack
- Calls
ProtocolStack.destroy on the protocol stack
- Sets the channel closed and channel connected flags to true and false
- Notifies any channel listener of the channel close operation
|
blockOk | public void blockOk()(Code) | | Called to acknowledge a block() (callback in MembershipListener or
BlockEvent received from call to receive() ).
After sending blockOk(), no messages should be sent until a new view has been received.
Calling this method on a closed channel has no effect.
|
checkClosed | protected void checkClosed() throws ChannelClosedException(Code) | | health check
throws a ChannelClosed exception if the channel is closed
|
checkNotConnected | protected void checkNotConnected() throws ChannelNotConnectedException(Code) | | health check.
throws a ChannelNotConnected exception if the channel is not connected
|
close | public synchronized void close()(Code) | | Destroys the channel.
After this method has been called, the channel us unusable.
This operation will disconnect the channel and close the channel receive queue immediately
|
closeMessageQueue | final public void closeMessageQueue(boolean flush_entries)(Code) | | |
connect | public synchronized void connect(String cluster_name) throws ChannelException, ChannelClosedException(Code) | | Connects the channel to a group.
If the channel is already connected, an error message will be printed to the error log.
If the channel is closed a ChannelClosed exception will be thrown.
This method starts the protocol stack by calling ProtocolStack.start,
then it sends an Event.CONNECT event down the stack and waits to receive a CONNECT_OK event.
Once the CONNECT_OK event arrives from the protocol stack, any channel listeners are notified
and the channel is considered connected.
Parameters: cluster_name - A String denoting the group name. Cannot be null. exception: ChannelException - The protocol stack cannot be started exception: ChannelClosedException - The channel is closed and therefore cannot be used any longer.A new channel has to be created first. |
disconnect | public synchronized void disconnect()(Code) | | Disconnects the channel if it is connected. If the channel is closed, this operation is ignored
Otherwise the following actions happen in the listed order
- The JChannel sends a DISCONNECT event down the protocol stack
- Blocks until the channel to receives a DISCONNECT_OK event
- Sends a STOP_QUEING event down the stack
- Stops the protocol stack by calling ProtocolStack.stop()
- Notifies the listener, if the listener is available
|
down | public void down(Event evt)(Code) | | Sends a message through the protocol stack if the stack is available
Parameters: evt - the message to send down, encapsulated in an event |
dumpStats | public Map dumpStats()(Code) | | Returns a map of statistics of the various protocols and of the channel itself.
Map. A map where the keys are the protocols ("channel" pseudo key isused for the channel itself") and the values are property maps. |
enableStats | public void enableStats(boolean stats)(Code) | | |
flushSupported | public boolean flushSupported()(Code) | | |
getAllStates | public boolean getAllStates(Vector targets, long timeout) throws ChannelNotConnectedException, ChannelClosedException(Code) | | Retrieves the current group state. Sends GET_STATE event down to STATE_TRANSFER layer.
Blocks until STATE_TRANSFER sends up a GET_STATE_OK event or until timeout
milliseconds have elapsed. The argument of GET_STATE_OK should be a vector of objects.
Parameters: targets - - the target members to receive the state from ( an Address list ) Parameters: timeout - - the number of milliseconds to wait for the operation to complete successfully true of the state was received, false if the operation timed outJChannel.getState(org.jgroups.Address,long) |
getEvent | static Object getEvent(Event evt)(Code) | | returns the value of the event
These objects will be returned
Event Type - Return Type
Event.MSG - returns a Message object
Event.VIEW_CHANGE - returns a View object
Event.SUSPECT - returns a SuspectEvent object
Event.BLOCK - returns a new BlockEvent object
Event.GET_APPLSTATE - returns a GetStateEvent object
Event.STATE_RECEIVED- returns a SetStateEvent object
Event.Exit - returns an ExitEvent object
All other - return the actual Event object
Parameters: evt - - the event of which you want to extract the value the event value if it matches the select list,returns null if the event is nullreturns the event itself if a match (See above) can not be made of the event type |
getLocalAddress | public Address getLocalAddress()(Code) | | returns the local address of the channel
returns null if the channel is closed
|
getLog | protected Log getLog()(Code) | | |
getNumMessages | public int getNumMessages()(Code) | | |
getNumberOfTasksInTimer | public int getNumberOfTasksInTimer()(Code) | | |
getOpt | public Object getOpt(int option)(Code) | | returns the value of an option.
Parameters: option - the option you want to see the value for the object value, in most cases java.lang.Boolean See Also: JChannel.setOpt |
getProperties | public String getProperties()(Code) | | returns the protocol stack configuration in string format.
an example of this property is
"UDP:PING:FD:STABLE:NAKACK:UNICAST:FRAG:FLUSH:GMS:VIEW_ENFORCER:STATE_TRANSFER:QUEUE"
|
getProtocolStack | public ProtocolStack getProtocolStack()(Code) | | Returns the protocol stack.
Currently used by Debugger.
Specific to JChannel, therefore
not visible in Channel
|
getReceivedBytes | public long getReceivedBytes()(Code) | | |
getReceivedMessages | public long getReceivedMessages()(Code) | | |
getSentBytes | public long getSentBytes()(Code) | | |
getSentMessages | public long getSentMessages()(Code) | | |
getState | public boolean getState(Address target, long timeout) throws ChannelNotConnectedException, ChannelClosedException(Code) | | Retrieves the current group state. Sends GET_STATE event down to STATE_TRANSFER layer.
Blocks until STATE_TRANSFER sends up a GET_STATE_OK event or until timeout
milliseconds have elapsed. The argument of GET_STATE_OK should be a single object.
Parameters: target - the target member to receive the state from. if null, state is retrieved from coordinator Parameters: timeout - the number of milliseconds to wait for the operation to complete successfully. 0 waits untilthe state has been received true of the state was received, false if the operation timed out |
getView | public View getView()(Code) | | Returns the current view.
If the channel is not connected or if it is closed it will return null.
returns the current group view, or null if the channel is closed or disconnected |
isConnected | public boolean isConnected()(Code) | | returns true if the Connect operation has been called successfully
|
isOpen | public boolean isOpen()(Code) | | returns true if the Open operation has been called successfully
|
open | public synchronized void open() throws ChannelException(Code) | | Opens the channel.
This does the following actions:
- Resets the receiver queue by calling Queue.reset
- Sets up the protocol stack by calling ProtocolStack.setup
- Sets the closed flag to false
|
printProtocolSpec | public String printProtocolSpec(boolean include_properties)(Code) | | Returns a pretty-printed form of all the protocols. If include_properties is set,
the properties for each protocol will also be printed.
|
receive | public Object receive(long timeout) throws ChannelNotConnectedException, ChannelClosedException, TimeoutException(Code) | | Blocking receive method.
This method returns the object that was first received by this JChannel and that has not been
received before. After the object is received, it is removed from the receive queue.
If you only want to inspect the object received without removing it from the queue call
JChannel.peek
If no messages are in the receive queue, this method blocks until a message is added or the operation times out
By specifying a timeout of 0, the operation blocks forever, or until a message has been received.
Parameters: timeout - the number of milliseconds to wait if the receive queue is empty. 0 means wait forever exception: TimeoutException - if a timeout occured prior to a new message was received exception: ChannelNotConnectedException - exception: ChannelClosedException - See Also: JChannel.peek |
resetStats | public void resetStats()(Code) | | |
returnState | public void returnState(byte[] state)(Code) | | Called by the application is response to receiving a getState() object when
calling receive() .
When the application receives a getState() message on the receive() method,
it should call returnState() to reply with the state of the application
Parameters: state - The state of the application as a byte buffer(to send over the network). |
returnState | public void returnState(byte[] state, String state_id)(Code) | | Returns a substate as indicated by state_id
Parameters: state - Parameters: state_id - |
setOpt | public void setOpt(int option, Object value)(Code) | | Sets a channel option. The options can be one of the following:
- Channel.BLOCK
- Channel.LOCAL
- Channel.AUTO_RECONNECT
- Channel.AUTO_GETSTATE
There are certain dependencies between the options that you can set,
I will try to describe them here.
Option: Channel.BLOCK
Value: java.lang.Boolean
Result: set to true will set setOpt(VIEW, true) and the JChannel will receive BLOCKS and VIEW events
Option: LOCAL
Value: java.lang.Boolean
Result: set to true the JChannel will receive messages that it self sent out.
Option: AUTO_RECONNECT
Value: java.lang.Boolean
Result: set to true and the JChannel will try to reconnect when it is being closed
Option: AUTO_GETSTATE
Value: java.lang.Boolean
Result: set to true, the AUTO_RECONNECT will be set to true and the JChannel will try to get the state after a close and reconnect happens
Parameters: option - the parameter option Channel.VIEW, Channel.SUSPECT, etc Parameters: value - the value to set for this option |
shutdown | public synchronized void shutdown()(Code) | | Shuts down the channel without disconnecting
|
startFlush | public boolean startFlush(long timeout, int numberOfAttempts, boolean automatic_resume)(Code) | | Will perform a flush of the system, ie. all pending messages are flushed out of the
system and all members ack their reception. After this call return, no member will
be sending any messages until
JChannel.stopFlush() is called.
In case of flush collisions random sleep time backoff algorithm is employed and
flush is reattempted for numberOfAttempts. Therefore this method is guaranteed
to return after timeout*numberOfAttempts miliseconds.
Parameters: timeout - Parameters: numberOfAttempts - if flush was unsuccessful attempt again until numberOfAttempts is 0 Parameters: automatic_resume - Call JChannel.stopFlush() after the flush true if FLUSH completed within the timeout |
startFlush | public boolean startFlush(long timeout, boolean automatic_resume)(Code) | | Will perform a flush of the system, ie. all pending messages are flushed out of the
system and all members ack their reception. After this call return, no member will
be sending any messages until
JChannel.stopFlush() is called.
In case of flush collisions random sleep time backoff algorithm is employed and
flush is reattempted for a default of three times. Therefore this method is guaranteed
to return after timeout*3 miliseconds.
Parameters: timeout - Parameters: automatic_resume - Call JChannel.stopFlush() after the flush true if FLUSH completed within the timeout |
statsEnabled | public boolean statsEnabled()(Code) | | |
stopFlush | public void stopFlush()(Code) | | |
up | public void up(Event evt)(Code) | | Callback method
Called by the ProtocolStack when a message is received.
It will be added to the message queue from which subsequent
Receive s will dequeue it.
Parameters: evt - the event carrying the message from the protocol stack |
Methods inherited from org.jgroups.Channel | public synchronized void addChannelListener(ChannelListener listener)(Code)(Java Doc) abstract public void blockOk()(Code)(Java Doc) abstract public void close()(Code)(Java Doc) abstract public void connect(String cluster_name) throws ChannelException, ChannelClosedException(Code)(Java Doc) abstract public boolean connect(String cluster_name, Address target, String state_id, long timeout) throws ChannelException(Code)(Java Doc) abstract public void disconnect()(Code)(Java Doc) public void down(Event evt)(Code)(Java Doc) public String dumpQueue()(Code)(Java Doc) abstract public Map dumpStats()(Code)(Java Doc) abstract public boolean flushSupported()(Code)(Java Doc) abstract public boolean getAllStates(Vector targets, long timeout) throws ChannelNotConnectedException, ChannelClosedException(Code)(Java Doc) abstract public String getChannelName()(Code)(Java Doc) abstract public String getClusterName()(Code)(Java Doc) abstract public Address getLocalAddress()(Code)(Java Doc) abstract protected Log getLog()(Code)(Java Doc) public int getNumMessages()(Code)(Java Doc) abstract public Object getOpt(int option)(Code)(Java Doc) abstract public boolean getState(Address target, long timeout) throws ChannelNotConnectedException, ChannelClosedException(Code)(Java Doc) abstract public boolean getState(Address target, String state_id, long timeout) throws ChannelNotConnectedException, ChannelClosedException(Code)(Java Doc) abstract public View getView()(Code)(Java Doc) abstract public boolean isConnected()(Code)(Java Doc) abstract public boolean isOpen()(Code)(Java Doc) protected void notifyChannelClosed(Channel c)(Code)(Java Doc) protected void notifyChannelConnected(Channel c)(Code)(Java Doc) protected void notifyChannelDisconnected(Channel c)(Code)(Java Doc) protected void notifyChannelReconnected(Address addr)(Code)(Java Doc) protected void notifyChannelShunned()(Code)(Java Doc) public void open() throws ChannelException(Code)(Java Doc) public static String option2String(int option)(Code)(Java Doc) abstract public Object peek(long timeout) throws ChannelNotConnectedException, ChannelClosedException, TimeoutException(Code)(Java Doc) abstract public Object receive(long timeout) throws ChannelNotConnectedException, ChannelClosedException, TimeoutException(Code)(Java Doc) public synchronized void removeChannelListener(ChannelListener listener)(Code)(Java Doc) abstract public void returnState(byte[] state)(Code)(Java Doc) abstract public void returnState(byte[] state, String state_id)(Code)(Java Doc) abstract public void send(Message msg) throws ChannelNotConnectedException, ChannelClosedException(Code)(Java Doc) abstract public void send(Address dst, Address src, Serializable obj) throws ChannelNotConnectedException, ChannelClosedException(Code)(Java Doc) public void setChannelListener(ChannelListener channel_listener)(Code)(Java Doc) abstract public void setOpt(int option, Object value)(Code)(Java Doc) public void setReceiver(Receiver r)(Code)(Java Doc) public void setUpHandler(UpHandler up_handler)(Code)(Java Doc) abstract protected void shutdown()(Code)(Java Doc) abstract public boolean startFlush(long timeout, boolean automatic_resume)(Code)(Java Doc) abstract public void stopFlush()(Code)(Java Doc)
|
|
|