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 withTCPorTCP_NIO2, don't use in production!- Since:
- 4.0
- Author:
- Bela Ban
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classSimpleTCP.AcceptorCalls ServerSocket.accept() and creates new Connection objectsprotected classSimpleTCP.Connection1 connection per peer to send and receive messages
-
Field Summary
Fields Modifier and Type Field Description protected SimpleTCP.Acceptoracceptorprotected java.util.Map<Address,java.net.SocketAddress>addr_tableprotected intbuffered_input_stream_sizeprotected intbuffered_output_stream_sizeprotected java.util.Map<java.net.SocketAddress,SimpleTCP.Connection>connectionsprotected intrecv_buf_sizeprotected intsend_buf_sizeprotected java.net.ServerSocketsrv_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)booleanaddPhysicalAddressToCache(Address logical_addr, PhysicalAddress physical_addr)voiddestroy()This method is called on aJChannel.close().java.lang.Objectdown(Event evt)An event is to be sent down the stack.java.lang.Objectdown(Message msg)A message needs to be sent to a single member or all membersprotected SimpleTCP.ConnectiongetConnection(java.net.SocketAddress dest)java.lang.StringgetInfo()protected PhysicalAddressgetPhysicalAddress()voidinit()Called after a protocol has been created and before the protocol is started.java.lang.StringprintAddressTable()protected voidsendTo(Address dest, byte[] buffer, int offset, int length)voidsendUnicast(PhysicalAddress dest, byte[] data, int offset, int length)Send a unicast to a member.voidstart()Creates the unicast and multicast sockets and starts the unicast and multicast receiver threadsvoidstop()Called on aJChannel.disconnect(); stops work (e.g.booleansupportsMulticasting()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, 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:TPWhether hardware multicasting is supported- Specified by:
supportsMulticastingin 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:TPSend a unicast to a member. Note that the destination address is a *physical*, not a logical address- Specified by:
sendUnicastin 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.ExceptionDescription copied from class:ProtocolCalled 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.ExceptionDescription copied from class:TPCreates the unicast and multicast sockets and starts the unicast and multicast receiver threads- Specified by:
startin interfaceLifecycle- Overrides:
startin 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:ProtocolCalled 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:ProtocolThis 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:ProtocolAn 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:TPA 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:
addPhysicalAddressToCachein classTP
-
getPhysicalAddress
protected PhysicalAddress getPhysicalAddress()
- Specified by:
getPhysicalAddressin classTP
-
-