Package org.jgroups
Class JChannel
- java.lang.Object
-
- org.jgroups.JChannel
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
ForkChannel
public class JChannel extends java.lang.Object implements java.io.Closeable
A channel represents a group communication endpoint (like a socket). An application joins a cluster by connecting the channel to a cluster name and leaves it by disconnecting. Messages sent over the channel are received by all cluster members that are connected to the same cluster (that is, all members that have the same cluster name). The state machine for a channel is as follows: a channel is created (unconnected). The channel is connected to a cluster (connected). Messages can now be sent and received. The channel is disconnected from the cluster (unconnected). The channel could now be connected to a different cluster again. The channel is closed (closed). Only a single sender is allowed to be connected to a channel at a time, but there can be more than one channel in an application. Messages can be sent to the cluster members using the send method and messages can be received by setting aReceiver
insetReceiver(Receiver)
and implementing theMessageListener.receive(Message)
callback, or extendingReceiverAdapter
and overriding theReceiverAdapter.receive(Message)
method.- Since:
- 2.0
- Author:
- Bela Ban
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JChannel.State
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<AddressGenerator>
address_generators
protected java.util.Set<ChannelListener>
channel_listeners
protected java.lang.String
cluster_name
protected boolean
discard_own_messages
protected boolean
flush_supported
protected Address
local_addr
protected Log
log
protected java.lang.String
name
protected DiagnosticsHandler.ProbeHandler
probe_handler
protected ProtocolStack
prot_stack
protected long
received_bytes
protected long
received_msgs
protected Receiver
receiver
protected long
sent_bytes
protected long
sent_msgs
protected JChannel.State
state
protected Promise<StateTransferResult>
state_promise
protected boolean
state_transfer_supported
protected boolean
stats
protected UpHandler
up_handler
protected View
view
-
Constructor Summary
Constructors Constructor Description JChannel()
Creates aJChannel
with the default stackJChannel(boolean create_protocol_stack)
Creates a JChannel without a protocol stack; used for programmatic creation of channel and protocol stackJChannel(java.io.InputStream input)
Creates a channel with a configuration based on an input stream.JChannel(java.lang.String props)
Constructs a JChannel instance with the protocol stack configuration based upon the specified properties parameter.JChannel(java.net.URL properties)
Constructs a JChannel instance with the protocol stack configuration indicated by the specified URL.JChannel(java.util.List<Protocol> protocols)
Creates a channel from a list of protocols.JChannel(ProtocolStackConfigurator configurator)
Constructs a JChannel with the protocol stack configuration contained by the protocol stack configurator parameter.JChannel(JChannel ch)
Creates a channel with the same configuration as the channel passed to this constructor.JChannel(Protocol... protocols)
Creates a channel from an array of protocols.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected JChannel
_close(boolean disconnect)
protected JChannel
_connect(Event evt)
protected boolean
_preConnect(java.lang.String cluster_name)
JChannel
addAddressGenerator(AddressGenerator address_generator)
Sets the newAddressGenerator
.JChannel
addChannelListener(ChannelListener listener)
Adds a ChannelListener that will be notified when a connect, disconnect or close occursAddress
address()
protected JChannel
checkClosed()
protected JChannel
checkClosedOrNotConnected()
protected void
cleanup()
JChannel
clearChannelListeners()
void
close()
Destroys the channel and its associated resources (e.g.java.lang.String
clusterName()
JChannel
connect(java.lang.String cluster_name)
Joins the cluster.protected JChannel
connect(java.lang.String cluster_name, boolean useFlushIfPresent)
Connects the channel to a cluster.JChannel
connect(java.lang.String cluster_name, Address target, long timeout)
Joins the cluster and gets the state from a specified state provider.JChannel
connect(java.lang.String cluster_name, Address target, long timeout, boolean useFlushIfPresent)
Joins the cluster and gets a state from a specified state provider.protected Address
determineCoordinator()
JChannel
disconnect()
Leaves the cluster (disconnects the channel if it is connected).java.lang.Object
down(Event evt)
Sends an event down the protocol stack.java.lang.Object
down(Message msg)
protected java.util.Map<java.lang.String,java.lang.Object>
dumpChannelStats()
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>
dumpStats()
Returns a map of statistics of the various protocols and of the channel itselfjava.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>
dumpStats(java.lang.String protocol_name)
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>
dumpStats(java.lang.String protocol_name, java.util.List<java.lang.String> attrs)
boolean
flushSupported()
protected Address
generateAddress()
Address
getAddress()
java.lang.String
getAddressAsString()
java.lang.String
getAddressAsUUID()
java.lang.String
getClusterName()
boolean
getDiscardOwnMessages()
java.lang.String
getName()
java.lang.String
getProperties()
Returns the protocol stack configuration in string format.ProtocolStack
getProtocolStack()
long
getReceivedBytes()
long
getReceivedMessages()
Receiver
getReceiver()
long
getSentBytes()
long
getSentMessages()
java.lang.String
getState()
JChannel
getState(Address target, long timeout)
Retrieves the full state from the target member.JChannel
getState(Address target, long timeout, boolean useFlushIfPresent)
Retrieves state from the target member.protected JChannel
getState(Address target, long timeout, java.util.concurrent.Callable<java.lang.Boolean> flushInvoker)
boolean
getStats()
UpHandler
getUpHandler()
static java.lang.String
getVersion()
View
getView()
java.lang.String
getViewAsString()
protected JChannel
init()
Initializes all variables.protected JChannel
init(ProtocolStackConfigurator configurator)
protected JChannel
init(JChannel ch)
protected java.lang.Object
invokeCallback(int type, java.lang.Object arg)
boolean
isClosed()
boolean
isConnected()
boolean
isConnecting()
boolean
isOpen()
java.lang.String
name()
JChannel
name(java.lang.String name)
protected JChannel
notifyChannelClosed(JChannel c)
protected JChannel
notifyChannelConnected(JChannel c)
protected JChannel
notifyChannelDisconnected(JChannel c)
protected JChannel
notifyListeners(java.util.function.Consumer<ChannelListener> func, java.lang.String msg)
java.lang.String
printProtocolSpec(boolean include_props)
Dumps all protocols in string format.JChannel
receiver(Receiver r)
boolean
removeAddressGenerator(AddressGenerator address_generator)
JChannel
removeChannelListener(ChannelListener listener)
JChannel
resetStats()
JChannel
send(Address dst, byte[] buf)
Sends a message.JChannel
send(Address dst, byte[] buf, int offset, int length)
Sends a message to a destination.JChannel
send(Address dst, java.lang.Object obj)
Helper method to create a Message with given parameters and invokesend(Message)
.JChannel
send(Message msg)
Sends a message.protected JChannel
setAddress()
Generates and sets local_addr.JChannel
setDiscardOwnMessages(boolean flag)
JChannel
setName(java.lang.String name)
Sets the logical name for the channel.JChannel
setReceiver(Receiver r)
JChannel
setStats(boolean stats)
JChannel
setUpHandler(UpHandler h)
ProtocolStack
stack()
JChannel
startFlush(boolean automatic_resume)
Performs the flush of the cluster, ie.JChannel
startFlush(java.util.List<Address> flushParticipants, boolean automatic_resume)
Performs the flush of the cluster but only for the specified flush participants.protected JChannel
startStack(java.lang.String cluster_name)
boolean
stats()
JChannel
stats(boolean stats)
JChannel
stopFlush()
Stops the current flush round.JChannel
stopFlush(java.util.List<Address> flushParticipants)
Stops the current flush of the cluster for the specified flush participants.protected JChannel
stopStack(boolean stop, boolean destroy)
java.lang.String
toString(boolean details)
java.lang.Object
up(Event evt)
Callback method
Called by the ProtocolStack when a message is received.java.lang.Object
up(Message msg)
JChannel
up(MessageBatch batch)
Callback invoked by the protocol stack to deliver a message batchView
view()
-
-
-
Field Detail
-
receiver
protected Receiver receiver
-
local_addr
protected Address local_addr
-
name
protected java.lang.String name
-
cluster_name
protected java.lang.String cluster_name
-
view
protected View view
-
state
protected volatile JChannel.State state
-
prot_stack
protected ProtocolStack prot_stack
-
up_handler
protected UpHandler up_handler
-
channel_listeners
protected java.util.Set<ChannelListener> channel_listeners
-
log
protected final Log log
-
address_generators
protected java.util.List<AddressGenerator> address_generators
-
state_promise
protected final Promise<StateTransferResult> state_promise
-
state_transfer_supported
protected boolean state_transfer_supported
-
flush_supported
protected volatile boolean flush_supported
-
probe_handler
protected final DiagnosticsHandler.ProbeHandler probe_handler
-
sent_msgs
protected long sent_msgs
-
received_msgs
protected long received_msgs
-
sent_bytes
protected long sent_bytes
-
received_bytes
protected long received_bytes
-
stats
protected boolean stats
-
discard_own_messages
protected boolean discard_own_messages
-
-
Constructor Detail
-
JChannel
public JChannel(boolean create_protocol_stack)
Creates a JChannel without a protocol stack; used for programmatic creation of channel and protocol stack- Parameters:
create_protocol_stack
- If true, the default config is used. If false, no protocol stack is created
-
JChannel
public JChannel() throws java.lang.Exception
Creates aJChannel
with the default stack- Throws:
java.lang.Exception
-
JChannel
public JChannel(java.lang.String props) throws java.lang.Exception
Constructs a JChannel instance with the protocol stack configuration based upon the specified properties parameter.- Parameters:
props
- A file containing a JGroups XML configuration or a URL pointing to an XML configuration- Throws:
java.lang.Exception
-
JChannel
public JChannel(java.io.InputStream input) throws java.lang.Exception
Creates a channel with a configuration based on an input stream.- Parameters:
input
- An input stream, pointing to a streamed configuration- Throws:
java.lang.Exception
-
JChannel
public JChannel(java.net.URL properties) throws java.lang.Exception
Constructs a JChannel instance with the protocol stack configuration indicated by the specified URL.- Parameters:
properties
- A URL pointing to a JGroups XML protocol stack configuration.- Throws:
java.lang.Exception
-
JChannel
public JChannel(ProtocolStackConfigurator configurator) throws java.lang.Exception
Constructs a JChannel 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 JGroups protocol stack configuration.- Throws:
java.lang.Exception
-
JChannel
public JChannel(Protocol... protocols) throws java.lang.Exception
Creates a channel from an array of protocols. Note that after aclose()
, the protocol list should not be reused, ie. new JChannel(protocols) would reuse the same protocol list, and this might lead to problems!- Parameters:
protocols
- The list of protocols, from bottom to top, ie. the first protocol in the list is the transport, the last the top protocol- Throws:
java.lang.Exception
-
JChannel
public JChannel(java.util.List<Protocol> protocols) throws java.lang.Exception
Creates a channel from a list of protocols. Note that after aclose()
, the protocol list should not be reused, ie. new JChannel(protocols) would reuse the same protocol list, and this might lead to problems !- Parameters:
protocols
- The list of protocols, from bottom to top, ie. the first protocol in the list is the transport, the last the top protocol- Throws:
java.lang.Exception
-
JChannel
public JChannel(JChannel ch) throws java.lang.Exception
Creates a channel with the same configuration as the channel passed to this constructor. This is used by testing code, and should not be used by clients!- Throws:
java.lang.Exception
-
-
Method Detail
-
getReceiver
public Receiver getReceiver()
-
getAddress
public Address getAddress()
-
address
public Address address()
-
getName
public java.lang.String getName()
-
name
public java.lang.String name()
-
name
public JChannel name(java.lang.String name)
-
clusterName
public java.lang.String clusterName()
-
getView
public View getView()
-
view
public View view()
-
getProtocolStack
public ProtocolStack getProtocolStack()
-
stack
public ProtocolStack stack()
-
getUpHandler
public UpHandler getUpHandler()
-
getStats
public boolean getStats()
-
stats
public boolean stats()
-
setStats
public JChannel setStats(boolean stats)
-
stats
public JChannel stats(boolean stats)
-
getDiscardOwnMessages
public boolean getDiscardOwnMessages()
-
setDiscardOwnMessages
public JChannel setDiscardOwnMessages(boolean flag)
-
flushSupported
public boolean flushSupported()
-
getAddressAsString
public java.lang.String getAddressAsString()
-
getAddressAsUUID
public java.lang.String getAddressAsUUID()
-
setName
public JChannel setName(java.lang.String name)
Sets the logical name for the channel. The name will stay associated with this channel for the channel's lifetime (until close() is called). This method must be called before calling connect()
-
getClusterName
public java.lang.String getClusterName()
-
getViewAsString
public java.lang.String getViewAsString()
-
getState
public java.lang.String getState()
-
isOpen
public boolean isOpen()
-
isConnected
public boolean isConnected()
-
isConnecting
public boolean isConnecting()
-
isClosed
public boolean isClosed()
-
getSentMessages
public long getSentMessages()
-
getSentBytes
public long getSentBytes()
-
getReceivedMessages
public long getReceivedMessages()
-
getReceivedBytes
public long getReceivedBytes()
-
getVersion
public static java.lang.String getVersion()
-
addChannelListener
public JChannel addChannelListener(ChannelListener listener)
Adds a ChannelListener that will be notified when a connect, disconnect or close occurs
-
removeChannelListener
public JChannel removeChannelListener(ChannelListener listener)
-
clearChannelListeners
public JChannel clearChannelListeners()
-
addAddressGenerator
public JChannel addAddressGenerator(AddressGenerator address_generator)
Sets the newAddressGenerator
. New addresses will be generated using the new generator. This should not be done while a channel is connected, but before connecting.- Parameters:
address_generator
-- Since:
- 2.12
-
removeAddressGenerator
public boolean removeAddressGenerator(AddressGenerator address_generator)
-
getProperties
public java.lang.String getProperties()
Returns the protocol stack configuration in string format. An example of this property is"UDP:PING:FDALL:STABLE:NAKACK2:UNICAST3:FRAG2:GMS"
-
resetStats
public JChannel resetStats()
-
printProtocolSpec
public java.lang.String printProtocolSpec(boolean include_props)
Dumps all protocols in string format. If include_props is set, the attrs of each protocol are also printed
-
dumpStats
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> dumpStats()
Returns a map of statistics of the various protocols and of the channel itself
-
dumpStats
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> dumpStats(java.lang.String protocol_name, java.util.List<java.lang.String> attrs)
-
dumpStats
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> dumpStats(java.lang.String protocol_name)
-
dumpChannelStats
protected java.util.Map<java.lang.String,java.lang.Object> dumpChannelStats()
-
connect
public JChannel connect(java.lang.String cluster_name) throws java.lang.Exception
Joins the cluster. The application is now able to receive messages from cluster members, views and to send messages to (all or single) cluster members. This is a no-op if already connected. All channels connecting to the same cluster name form a cluster; messages sent to the cluster will be received by all cluster members.- Parameters:
cluster_name
- The name of the cluster to join- Throws:
java.lang.Exception
- The protocol stack cannot be startedjava.lang.IllegalStateException
- The channel is closed
-
connect
protected JChannel connect(java.lang.String cluster_name, boolean useFlushIfPresent) throws java.lang.Exception
Connects the channel to a cluster.- Throws:
java.lang.Exception
-
connect
public JChannel connect(java.lang.String cluster_name, Address target, long timeout) throws java.lang.Exception
Joins the cluster and gets the state from a specified state provider. This method essentially invokesconnect
and
getState
methods successively. If FLUSH protocol is in channel's stack definition only one flush is executed for both connecting and fetching state rather than two flushes if we invoke
connect
and
getState
in succession. If the channel is closed an exception will be thrown.
- Parameters:
cluster_name
- the cluster name to connect to. Cannot be null.target
- the state provider. If null state will be fetched from coordinator, unless this channel is coordinator.timeout
- the timeout for state transfer.- Throws:
java.lang.Exception
- Connecting to the cluster or state transfer was not successfuljava.lang.IllegalStateException
- The channel is closed and therefore cannot be used
-
connect
public JChannel connect(java.lang.String cluster_name, Address target, long timeout, boolean useFlushIfPresent) throws java.lang.Exception
Joins the cluster and gets a state from a specified state provider. This method invokesconnect()
and thengetState
. If the FLUSH protocol is in the channel's stack definition, only one flush round is executed for both connecting and fetching the state rather than two flushes if we invokeconnect
andgetState
in succession. If the channel is closed a ChannelClosed exception will be thrown.- Parameters:
cluster_name
- The cluster name to connect to. Cannot be null.target
- The state provider. If null, the state will be fetched from the coordinator, unless this channel is the coordinator.timeout
- The timeout for the state transfer.- Throws:
java.lang.Exception
- The protocol stack cannot be started, or the JOIN failedjava.lang.IllegalStateException
- The channel is closed or disconnectedStateTransferException
- State transfer was not successful
-
disconnect
public JChannel disconnect()
Leaves the cluster (disconnects the channel if it is connected). If the channel is closed or disconnected, this operation is ignored. The channel can then be used to join the same or a different cluster again.- See Also:
connect(String)
-
close
public void close()
Destroys the channel and its associated resources (e.g. the protocol stack). After a channel has been closed, invoking methods on it will throw aChannelClosed
exception (or results in a null operation). It is a no-op if the channel is already closed. If the channel is connected to a cluster,disconnect()
will be called first.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
-
send
public JChannel send(Message msg) throws java.lang.Exception
Sends a message. The message contains- a destination address (Address). A
null
address sends the message to all cluster members. - a source address. Can be left empty as it will be assigned automatically
- a byte buffer. The message contents.
- several additional fields. They can be used by application programs (or patterns). E.g. a message ID, flags etc
- Parameters:
msg
- the message to be sent. Destination and buffer should be set. A null destination means to send to all group members.- Throws:
java.lang.IllegalStateException
- thrown if the channel is disconnected or closedjava.lang.Exception
- a destination address (Address). A
-
send
public JChannel send(Address dst, java.lang.Object obj) throws java.lang.Exception
Helper method to create a Message with given parameters and invokesend(Message)
.- Parameters:
dst
- destination address for the message. If null, the message will be sent to all cluster membersobj
- a serializable object. Will be marshalled into the byte buffer of the message. If it is not serializable, an exception will be thrown- Throws:
java.lang.Exception
- exception thrown if message sending was not successful
-
send
public JChannel send(Address dst, byte[] buf) throws java.lang.Exception
Sends a message. Seesend(Address,byte[],int,int)
for details- Parameters:
dst
- destination address for the message. If null, the message will be sent to all cluster membersbuf
- buffer message payload- Throws:
java.lang.Exception
- exception thrown if the message sending was not successful
-
send
public JChannel send(Address dst, byte[] buf, int offset, int length) throws java.lang.Exception
Sends a message to a destination. * @param dst the destination address. If null, the message will be sent to all cluster nodes (= cluster members)- Parameters:
buf
- the buffer to be sentoffset
- the offset into the bufferlength
- the length of the data to be sent. Has to be <= buf.length - offset. This will sendlength
bytes starting atoffset
- Throws:
java.lang.Exception
- thrown if send() failed
-
getState
public JChannel getState(Address target, long timeout) throws java.lang.Exception
Retrieves the full state from the target member.The state transfer is initiated by invoking getState() on this channel. The state provider in turn invokes the
StateListener.getState(java.io.OutputStream)
callback and sends the state to this node, the state receiver. After the state arrives at the state receiver, theStateListener.setState(java.io.InputStream)
callback is invoked to install the state.- Parameters:
target
- the state provider. If null the coordinator is used by defaulttimeout
- the number of milliseconds to wait for the operation to complete successfully. 0 waits forever until the state has been received- Throws:
java.lang.IllegalStateException
- the channel was closed or disconnected, or the flush (if present) failedStateTransferException
- raised if there was a problem during the state transferjava.lang.Exception
- See Also:
StateListener.getState(java.io.OutputStream)
,StateListener.setState(java.io.InputStream)
-
getState
public JChannel getState(Address target, long timeout, boolean useFlushIfPresent) throws java.lang.Exception
Retrieves state from the target member. SeegetState(Address,long)
for details- Throws:
java.lang.Exception
-
startFlush
public JChannel startFlush(boolean automatic_resume) throws java.lang.Exception
Performs the flush of the cluster, ie. all pending application messages are flushed out of the cluster and all members ack their reception. After this call returns, no member will be allowed to send any messages untilstopFlush()
is called. In the case of flush collisions (another member attempts flush at roughly the same time) start flush will fail by throwing an Exception. Applications can re-attempt flushing after certain back-off period. JGroups provides a helper random sleep time backoff algorithm for flush using Util class.- Parameters:
automatic_resume
- if true callstopFlush()
after the flush- Throws:
java.lang.Exception
-
startFlush
public JChannel startFlush(java.util.List<Address> flushParticipants, boolean automatic_resume) throws java.lang.Exception
Performs the flush of the cluster but only for the specified flush participants. All pending messages are flushed out but only for the flush participants. The remaining members in the cluster are not included in the flush. The list of flush participants should be a proper subset of the current view. If this flush is not automatically resumed it is an obligation of the application to invoke the matchingstopFlush(List)
method with the same list of members used instartFlush(List, boolean)
.- Parameters:
automatic_resume
- if true callstopFlush()
after the flush- Throws:
java.lang.Exception
-
stopFlush
public JChannel stopFlush()
Stops the current flush round. Cluster members are unblocked and allowed to send new and pending messages
-
stopFlush
public JChannel stopFlush(java.util.List<Address> flushParticipants)
Stops the current flush of the cluster for the specified flush participants. Flush participants are unblocked and allowed to send new and pending messages. It is an obligation of the application to invoke the matchingstartFlush(List, boolean)
method with the same list of members prior to invocation of this method.- Parameters:
flushParticipants
- the flush participants
-
down
public java.lang.Object down(Event evt)
Sends an event down the protocol stack. Note that - contrary tosend(Message)
, if the event is a message, no checks are performed whether the channel is closed or disconnected. Note that this method is not typically used by applications.- Parameters:
evt
- the message to send down, encapsulated in an event
-
down
public java.lang.Object down(Message msg)
-
up
public java.lang.Object up(Event evt)
Callback method
Called by the ProtocolStack when a message is received.- Parameters:
evt
- the event carrying the message from the protocol stack
-
up
public java.lang.Object up(Message msg)
-
up
public JChannel up(MessageBatch batch)
Callback invoked by the protocol stack to deliver a message batch
-
toString
public java.lang.String toString(boolean details)
-
_preConnect
protected boolean _preConnect(java.lang.String cluster_name) throws java.lang.Exception
- Throws:
java.lang.Exception
-
_connect
protected JChannel _connect(Event evt) throws java.lang.Exception
- Throws:
java.lang.Exception
-
cleanup
protected void cleanup()
-
getState
protected JChannel getState(Address target, long timeout, java.util.concurrent.Callable<java.lang.Boolean> flushInvoker) throws java.lang.Exception
- Throws:
java.lang.Exception
-
invokeCallback
protected java.lang.Object invokeCallback(int type, java.lang.Object arg)
-
init
protected final JChannel init(ProtocolStackConfigurator configurator) throws java.lang.Exception
- Throws:
java.lang.Exception
-
init
protected final JChannel init(JChannel ch) throws java.lang.Exception
- Throws:
java.lang.Exception
-
init
protected JChannel init()
Initializes all variables. Used after close() or disconnect(), to be ready for new connect()
-
startStack
protected JChannel startStack(java.lang.String cluster_name) throws java.lang.Exception
- Throws:
java.lang.Exception
-
setAddress
protected JChannel setAddress()
Generates and sets local_addr. Sends down a REMOVE_ADDRESS (if existing address was present) and a SET_LOCAL_ADDRESS
-
generateAddress
protected Address generateAddress()
-
checkClosed
protected JChannel checkClosed()
-
checkClosedOrNotConnected
protected JChannel checkClosedOrNotConnected()
-
_close
protected JChannel _close(boolean disconnect)
-
stopStack
protected JChannel stopStack(boolean stop, boolean destroy)
-
determineCoordinator
protected Address determineCoordinator()
-
notifyListeners
protected JChannel notifyListeners(java.util.function.Consumer<ChannelListener> func, java.lang.String msg)
-
-