org.jgroups.protocols
Class TCP

java.lang.Object
  extended byorg.jgroups.stack.Protocol
      extended byorg.jgroups.protocols.TP
          extended byorg.jgroups.protocols.TCP
All Implemented Interfaces:
ConnectionTable.Receiver
Direct Known Subclasses:
TCP_NIO

public class TCP
extends TP
implements ConnectionTable.Receiver

TCP based protocol. Creates a server socket, which gives us the local address of this group member. For each accept() on the server socket, a new thread is created that listens on the socket. For each outgoing message m, if m.dest is in the ougoing hashtable, the associated socket will be reused to send message, otherwise a new socket is created and put in the hashtable. When a socket connection breaks or a member is removed from the group, the corresponding items in the incoming and outgoing hashtables will be removed as well.
This functionality is in ConnectionTable, which isT used by TCP. TCP sends messages using ct.send() and registers with the connection table to receive all incoming messages.

Author:
Bela Ban

Field Summary
 
Fields inherited from class org.jgroups.stack.Protocol
down_handler, down_prot, down_queue, down_thread, down_thread_prio, log, observer, props, stack, stats, trace, up_handler, up_prot, up_queue, up_thread, up_thread_prio, warn
 
Constructor Summary
TCP()
           
 
Method Summary
 java.net.InetAddress getBindAddr()
           
protected  ConnectionTable getConnectionTable(long reaperInterval, long connExpireTime, java.net.InetAddress bindAddress, java.net.InetAddress externalAddress, int startPort, int endPort)
           
 long getConnExpireTime()
           
 int getEndPort()
           
 java.lang.String getInfo()
           
 java.lang.String getName()
           
 int getOpenConnections()
           
 long getReaperInterval()
           
 int getStartPort()
           
protected  void handleDownEvent(Event evt)
           
 boolean isLoopback()
           
 void postUnmarshalling(Message msg, Address dest, Address src, boolean multicast)
           
 void postUnmarshallingList(Message msg, Address dest, boolean multicast)
           
 java.lang.String printConnections()
           
 void receive(Address sender, byte[] data, int offset, int length)
          ConnectionTable.Receiver interface
 void sendToAllMembers(byte[] data, int offset, int length)
          Send to all members in the group.
 void sendToSingleMember(Address dest, byte[] data, int offset, int length)
          Send to all members in the group.
 void setBindAddr(java.net.InetAddress bind_addr)
           
 void setConnExpireTime(long conn_expire_time)
           
 void setEndPort(int end_port)
           
 void setLoopback(boolean loopback)
           
 boolean setProperties(java.util.Properties props)
          Setup the Protocol instance acording to the configuration string
 void setReaperInterval(long reaper_interval)
           
 void setStartPort(int start_port)
           
 void start()
          Creates the unicast and multicast sockets and starts the unicast and multicast receiver threads
 void stop()
          This method is called on a Channel.disconnect().
 
Methods inherited from class org.jgroups.protocols.TP
down, dumpStats, getBindAddress, getBindToAllInterfaces, getChannelName, getIncomingQueueSize, getLocalAddress, getMaxBundleSize, getMaxBundleTimeout, getNumBytesReceived, getNumBytesSent, getNumMessagesReceived, getNumMessagesSent, getOutgoingQueueMaxSize, getOutgoingQueueSize, getReceiveInterfaces, getSendInterfaces, handleConfigEvent, isDiscardIncompatiblePackets, isEnableBundling, isReceiveOnAllInterfaces, isSendOnAllInterfaces, isUseIncomingPacketHandler, isUseOutgoingPacketHandler, receive, resetStats, setBindAddress, setBindToAllInterfaces, setDiscardIncompatiblePackets, setEnableBundling, setMaxBundleSize, setMaxBundleTimeout, setOutgoingQueueMaxSize, startUpHandler, toString, up
 
Methods inherited from class org.jgroups.stack.Protocol
destroy, downThreadEnabled, enableStats, getDownProtocol, getDownQueue, getProperties, getUpProtocol, getUpQueue, handleSpecialDownEvent, init, isTrace, isWarn, passDown, passUp, printStats, providedDownServices, providedUpServices, receiveDownEvent, receiveUpEvent, requiredDownServices, requiredUpServices, setDownProtocol, setObserver, setPropertiesInternal, setProtocolStack, setTrace, setUpProtocol, setWarn, startDownHandler, statsEnabled, stopInternal, upThreadEnabled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TCP

public TCP()
Method Detail

getName

public java.lang.String getName()
Specified by:
getName in class Protocol

getOpenConnections

public int getOpenConnections()

getBindAddr

public java.net.InetAddress getBindAddr()

setBindAddr

public void setBindAddr(java.net.InetAddress bind_addr)

getStartPort

public int getStartPort()

setStartPort

public void setStartPort(int start_port)

getEndPort

public int getEndPort()

setEndPort

public void setEndPort(int end_port)

getReaperInterval

public long getReaperInterval()

setReaperInterval

public void setReaperInterval(long reaper_interval)

getConnExpireTime

public long getConnExpireTime()

setConnExpireTime

public void setConnExpireTime(long conn_expire_time)

isLoopback

public boolean isLoopback()
Overrides:
isLoopback in class TP

setLoopback

public void setLoopback(boolean loopback)
Overrides:
setLoopback in class TP

printConnections

public java.lang.String printConnections()

setProperties

public boolean setProperties(java.util.Properties props)
Setup the Protocol instance acording to the configuration string

Overrides:
setProperties in class TP
Returns:
true if no other properties are left. false if the properties still have data in them, ie , properties are left over and not handled by the protocol stack

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

Overrides:
start in class TP
Throws:
java.lang.Exception

stop

public void stop()
Description copied from class: Protocol
This method is called on a Channel.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

Overrides:
stop in class TP

handleDownEvent

protected void handleDownEvent(Event evt)
Overrides:
handleDownEvent in class TP

getConnectionTable

protected ConnectionTable getConnectionTable(long reaperInterval,
                                             long connExpireTime,
                                             java.net.InetAddress bindAddress,
                                             java.net.InetAddress externalAddress,
                                             int startPort,
                                             int endPort)
                                      throws java.lang.Exception
Parameters:
reaperInterval -
connExpireTime -
bindAddress -
startPort -
Returns:
ConnectionTable Sub classes overrides this method to initialize a different version of ConnectionTable.
Throws:
java.lang.Exception

receive

public void receive(Address sender,
                    byte[] data,
                    int offset,
                    int length)
ConnectionTable.Receiver interface

Specified by:
receive in interface ConnectionTable.Receiver

sendToAllMembers

public void sendToAllMembers(byte[] data,
                             int offset,
                             int length)
                      throws java.lang.Exception
Description copied from class: TP
Send to all members in the group. UDP would use an IP multicast message, whereas TCP would send N messages, one for each member

Specified by:
sendToAllMembers in class TP
Parameters:
data - The data to be sent. This is not a copy, so don't modify it
offset -
length -
Throws:
java.lang.Exception

sendToSingleMember

public void sendToSingleMember(Address dest,
                               byte[] data,
                               int offset,
                               int length)
                        throws java.lang.Exception
Description copied from class: TP
Send to all members in the group. UDP would use an IP multicast message, whereas TCP would send N messages, one for each member

Specified by:
sendToSingleMember in class TP
Parameters:
dest - Must be a non-null unicast address
data - The data to be sent. This is not a copy, so don't modify it
offset -
length -
Throws:
java.lang.Exception

getInfo

public java.lang.String getInfo()
Specified by:
getInfo in class TP

postUnmarshalling

public void postUnmarshalling(Message msg,
                              Address dest,
                              Address src,
                              boolean multicast)
Specified by:
postUnmarshalling in class TP

postUnmarshallingList

public void postUnmarshallingList(Message msg,
                                  Address dest,
                                  boolean multicast)
Specified by:
postUnmarshallingList in class TP


Copyright ? 1998-2005 Bela Ban. All Rights Reserved.