Package org.jgroups.protocols
Class SimpleTCP
- java.lang.Object
-
- org.jgroups.stack.Protocol
-
- org.jgroups.protocols.TP
-
- org.jgroups.protocols.SimpleTCP
-
- All Implemented Interfaces:
Lifecycle
,DiagnosticsHandler.ProbeHandler
public class SimpleTCP extends TP
Bare-bones thread-per-connection TCP-based transport. Only used to compare withTCP
orTCP_NIO2
, don't use in production!- Since:
- 4.0
- Author:
- Bela Ban
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
SimpleTCP.Acceptor
Calls ServerSocket.accept() and creates new Connection objectsprotected class
SimpleTCP.Connection
1 connection per peer to send and receive messages
-
Field Summary
Fields Modifier and Type Field Description protected SimpleTCP.Acceptor
acceptor
protected java.util.Map<Address,java.net.SocketAddress>
addr_table
protected int
buffered_input_stream_size
protected int
buffered_output_stream_size
protected java.util.Map<java.net.SocketAddress,SimpleTCP.Connection>
connections
protected int
recv_buf_size
protected int
send_buf_size
protected java.net.ServerSocket
srv_sock
-
Fields inherited from class org.jgroups.protocols.TP
async_executor, bind_addr, bind_port, bundler, bundler_type, cluster_name, connectLock, diag_handler, external_addr, external_port, header, is_trace, last_discovery_request, LIST, local_physical_addr, local_transport, local_transport_class, log_discard_msgs, log_discard_msgs_version, logical_addr_cache, logical_addr_cache_expiration, logical_addr_cache_max_size, logical_addr_cache_reaper, logical_addr_cache_reaper_interval, members, message_processing_policy, MIN_WAIT_BETWEEN_DISCOVERIES, MSG_OVERHEAD, msg_processing_policy, msg_stats, MULTICAST, port_range, print_function, receive_interfaces, receive_on_all_interfaces, rtt, socket_factory, suppress_log_different_cluster, suppress_log_different_version, suppress_time_different_cluster_warnings, suppress_time_different_version_warnings, thread_factory, thread_naming_pattern, thread_pool, time_service, time_service_interval, timer, timer_handle_non_blocking_tasks, use_vthreads, view, who_has_cache, who_has_cache_timeout
-
Fields inherited from class org.jgroups.stack.Protocol
after_creation_hook, down_prot, ergonomics, id, local_addr, log, policies, stack, stats, up_prot
-
-
Constructor Summary
Constructors Constructor Description SimpleTCP()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Object
_down(Message msg)
boolean
addPhysicalAddressToCache(Address logical_addr, PhysicalAddress physical_addr)
void
destroy()
This method is called on aJChannel.close()
.java.lang.Object
down(Event evt)
An event is to be sent down the stack.java.lang.Object
down(Message msg)
A message needs to be sent to a single member or all membersprotected SimpleTCP.Connection
getConnection(java.net.SocketAddress dest)
java.lang.String
getInfo()
protected PhysicalAddress
getPhysicalAddress()
void
init()
Called after a protocol has been created and before the protocol is started.java.lang.String
printAddressTable()
protected void
sendTo(Address dest, byte[] buffer, int offset, int length)
void
sendUnicast(PhysicalAddress dest, byte[] data, int offset, int length)
Send a unicast to a member.void
start()
Creates the unicast and multicast sockets and starts the unicast and multicast receiver threadsvoid
stop()
Called on aJChannel.disconnect()
; stops work (e.g.boolean
supportsMulticasting()
Whether hardware multicasting is supported-
Methods inherited from class org.jgroups.protocols.TP
addPhysicalAddressToCache, bundler, clearDifferentClusterCache, clearDifferentVersionCache, clearLogicalAddressCache, createBundler, createDiagnosticsHandler, defaultHeaders, disableDiagnostics, doSend, dumpTimerTasks, enableAllStats, enableBlockingTimerTasks, enableDiagnostics, enableStats, evictLogicalAddressCache, evictLogicalAddressCache, fetchLocalAddresses, fetchPhysicalAddrs, fetchResponsesFromDiscoveryProtocol, getAllPhysicalAddressesFromCache, getAsyncExecutor, getBindAddr, getBindAddress, getBindPort, getBundler, getBundlerClass, getBundlerType, getClusterName, getClusterNameAscii, getDiagnosticsHandler, getDifferentClusterMessages, getDifferentVersionMessages, getExternalAddr, getExternalPort, getLocalPhysicalAddress, getLocalTransport, getLogDiscardMessages, getLogDiscardMessagesVersion, getLogicalAddrCacheExpiration, getLogicalAddrCacheMaxSize, getLogicalAddrCacheReaperInterval, getLogicalAddressCache, getMessageProcessingPolicy, getMessageStats, getNumberOfThreadDumps, getNumMcastMsgsReceived, getNumMcastMsgsSent, getNumRejectedMsgs, getNumThreads, getNumTimerTasks, getNumUcastMsgsReceived, getNumUcastMsgsSent, getPhysicalAddressFromCache, getPortRange, getReceiveInterfaces, getRTT, getSocketFactory, getSuppressTimeDifferentClusterWarnings, getSuppressTimeDifferentVersionWarnings, getThreadFactory, getThreadNamingPattern, getThreadPool, getTimer, getTimerClass, getTimerThreads, getTimeService, getTimeServiceInterval, getWhoHasCacheTimeout, handleConnect, handleDisconnect, handleMessageBatch, handleProbe, handleSingleMessage, isLogicalAddressCacheReaperRunning, isMulticastCapable, isReceiveOnAllInterfaces, isTrace, isTrace, localPhysicalAddress, logDiscardMsgs, logDiscardMsgs, logDiscardMsgsVersion, logDiscardMsgsVersion, loggerType, msgProcessingPolicy, msgProcessingPolicy, passBatchUp, passMessageUp, printLogicalAddressCache, printWhoHasCache, processBatch, receive, receive, receiveOnAllInterfaces, receiveOnAllInterfaces, registerLocalAddress, registerProbeHandler, removeCancelledTimerTasks, removeLogicalAddressFromCache, resetStats, sameCluster, sendToAll, sendUnicasts, setAddress, setAsyncExecutor, setBindAddr, setBindAddress, setBindPort, setBindToAllInterfaces, setBundler, setBundlerType, setDiagnosticsHandler, setExternalAddr, setExternalPort, setInAllThreadFactories, setLevel, setLocalTransport, setLocalTransport, setLogDiscardMessages, setLogDiscardMessagesVersion, setLogicalAddrCacheExpiration, setLogicalAddrCacheMaxSize, setLogicalAddrCacheReaperInterval, setMessageProcessingPolicy, setPortRange, setSocketFactory, setSourceAddress, setSuppressTimeDifferentClusterWarnings, setSuppressTimeDifferentVersionWarnings, setThreadFactory, setThreadNames, setThreadPool, setTimer, setTimeService, setTimeServiceInterval, setWhoHasCacheTimeout, startDiagnostics, stopDiagnostics, supportedKeys, timestamp, toString, unicastDestMismatch, unregisterProbeHandler, unsetThreadNames, useVirtualThreads, versionMatch, view
-
Methods inherited from class org.jgroups.stack.Protocol
accept, addPolicy, addr, addr, afterCreationHook, down, getAddress, getComponents, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getLog, getName, getPolicies, getProtocolStack, getTransport, getUpProtocol, getUpServices, getValue, isErgonomics, level, parse, policies, providedDownServices, providedUpServices, removePolicy, requiredDownServices, requiredUpServices, resetStatistics, setDownProtocol, setErgonomics, setId, setPolicies, setProtocolStack, setUpProtocol, setValue, statsEnabled, up, up, up
-
-
-
-
Field Detail
-
recv_buf_size
protected int recv_buf_size
-
send_buf_size
protected int send_buf_size
-
buffered_input_stream_size
protected int buffered_input_stream_size
-
buffered_output_stream_size
protected int buffered_output_stream_size
-
srv_sock
protected java.net.ServerSocket srv_sock
-
acceptor
protected SimpleTCP.Acceptor acceptor
-
connections
protected final java.util.Map<java.net.SocketAddress,SimpleTCP.Connection> connections
-
addr_table
protected final java.util.Map<Address,java.net.SocketAddress> addr_table
-
-
Method Detail
-
supportsMulticasting
public boolean supportsMulticasting()
Description copied from class:TP
Whether hardware multicasting is supported- Specified by:
supportsMulticasting
in classTP
-
printAddressTable
public java.lang.String printAddressTable()
-
sendUnicast
public void sendUnicast(PhysicalAddress dest, byte[] data, int offset, int length) throws java.lang.Exception
Description copied from class:TP
Send a unicast to a member. Note that the destination address is a *physical*, not a logical address- Specified by:
sendUnicast
in classTP
- Parameters:
dest
- Must be a non-null unicast addressdata
- The data to be sent. This is not a copy, so don't modify it- Throws:
java.lang.Exception
-
init
public void init() throws java.lang.Exception
Description copied from class:Protocol
Called after a protocol has been created and before the protocol is started. Attributes are already set. Other protocols are not yet connected and events cannot yet be sent.
-
start
public void start() throws java.lang.Exception
Description copied from class:TP
Creates the unicast and multicast sockets and starts the unicast and multicast receiver threads- Specified by:
start
in interfaceLifecycle
- Overrides:
start
in classTP
- Throws:
java.lang.Exception
- Thrown if protocol cannot be started successfully. This will cause the ProtocolStack to fail, soJChannel.connect(String)
will throw an exception
-
stop
public void stop()
Description copied from class:Protocol
Called on aJChannel.disconnect()
; stops work (e.g. by closing multicast socket). Will be called from top to bottom.
-
destroy
public void destroy()
Description copied from class:Protocol
This method is called on aJChannel.close()
. Does some cleanup; after the call, the VM will terminate
-
down
public java.lang.Object down(Event evt)
Description copied from class:Protocol
An event is to be sent down the stack. A protocol 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 protocol may need to add a header to it (or do nothing at all) before sending it down the stack usingdown_prot.down()
.
-
down
public java.lang.Object down(Message msg)
Description copied from class:TP
A message needs to be sent to a single member or all members
-
_down
protected java.lang.Object _down(Message msg) throws java.lang.Exception
- Throws:
java.lang.Exception
-
sendTo
protected void sendTo(Address dest, byte[] buffer, int offset, int length) throws java.lang.Exception
-
getConnection
protected SimpleTCP.Connection getConnection(java.net.SocketAddress dest) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addPhysicalAddressToCache
public boolean addPhysicalAddressToCache(Address logical_addr, PhysicalAddress physical_addr)
- Overrides:
addPhysicalAddressToCache
in classTP
-
getPhysicalAddress
protected PhysicalAddress getPhysicalAddress()
- Specified by:
getPhysicalAddress
in classTP
-
-