Package org.jgroups.blocks.cs
Class TcpConnection
- java.lang.Object
 - 
- org.jgroups.blocks.cs.Connection
 - 
- org.jgroups.blocks.cs.TcpConnection
 
 
 
- 
- All Implemented Interfaces:
 java.io.Closeable,java.lang.AutoCloseable
public class TcpConnection extends Connection
Blocking IO (BIO) connection. Starts 1 reader thread for the peer socket and blocks until data is available. CallsBaseServer.receive(Address,byte[],int,int)when data has been received.- Since:
 - 3.6.5
 - Author:
 - Bela Ban
 
 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classTcpConnection.Receiver 
- 
Field Summary
Fields Modifier and Type Field Description protected booleanconnectedprotected java.io.DataInputStreaminprotected java.io.DataOutputStreamoutprotected TcpConnection.Receiverreceiverprotected java.util.concurrent.locks.ReentrantLocksend_lockprotected TcpBaseServerserverprotected java.net.Socketsockprotected java.util.concurrent.atomic.AtomicIntegerwriters- 
Fields inherited from class org.jgroups.blocks.cs.Connection
cookie, last_access, peer_addr 
 - 
 
- 
Constructor Summary
Constructors Constructor Description TcpConnection(java.net.Socket s, TcpServer server)TcpConnection(Address peer_addr, TcpBaseServer server)Creates a connection stub and binds it, useconnect(Address)to connect 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidconnect(Address dest)protected voidconnect(Address dest, boolean send_local_addr)protected java.io.BufferedInputStreamcreateBufferedInputStream(java.io.InputStream in)protected java.io.BufferedOutputStreamcreateBufferedOutputStream(java.io.OutputStream out)protected voiddoSend(byte[] data, int offset, int length)protected voidflush()protected java.lang.StringgetSockAddress()protected longgetTimestamp()booleanisConnected()booleanisConnectionPending()booleanisExpired(long now)booleanisOpen()AddresslocalAddress()AddresspeerAddress()protected AddressreadPeerAddress(java.net.Socket client_sock)Reads the peer's address.voidsend(byte[] data, int offset, int length)voidsend(java.nio.ByteBuffer buf)protected voidsendLocalAddress(Address local_addr)Send the cookie first, then the our port number.protected voidsetSocketParameters(java.net.Socket client_sock)voidstart()java.lang.Stringstatus()java.lang.StringtoString()protected voidupdateLastAccessed() 
 - 
 
- 
- 
Field Detail
- 
sock
protected final java.net.Socket sock
 
- 
send_lock
protected final java.util.concurrent.locks.ReentrantLock send_lock
 
- 
out
protected java.io.DataOutputStream out
 
- 
in
protected java.io.DataInputStream in
 
- 
receiver
protected volatile TcpConnection.Receiver receiver
 
- 
server
protected final TcpBaseServer server
 
- 
writers
protected final java.util.concurrent.atomic.AtomicInteger writers
 
- 
connected
protected boolean connected
 
 - 
 
- 
Constructor Detail
- 
TcpConnection
public TcpConnection(Address peer_addr, TcpBaseServer server) throws java.lang.Exception
Creates a connection stub and binds it, useconnect(Address)to connect- Throws:
 java.lang.Exception
 
- 
TcpConnection
public TcpConnection(java.net.Socket s, TcpServer server) throws java.lang.Exception- Throws:
 java.lang.Exception
 
 - 
 
- 
Method Detail
- 
localAddress
public Address localAddress()
- Specified by:
 localAddressin classConnection
 
- 
peerAddress
public Address peerAddress()
- Specified by:
 peerAddressin classConnection
 
- 
getTimestamp
protected long getTimestamp()
 
- 
getSockAddress
protected java.lang.String getSockAddress()
 
- 
updateLastAccessed
protected void updateLastAccessed()
 
- 
connect
public void connect(Address dest) throws java.lang.Exception
- Specified by:
 connectin classConnection- Throws:
 java.lang.Exception
 
- 
connect
protected void connect(Address dest, boolean send_local_addr) throws java.lang.Exception
- Throws:
 java.lang.Exception
 
- 
start
public void start()
- Specified by:
 startin classConnection
 
- 
send
public void send(byte[] data, int offset, int length) throws java.lang.Exception- Specified by:
 sendin classConnection- Parameters:
 data- Guaranteed to be non nulloffset-length-- Throws:
 java.lang.Exception
 
- 
send
public void send(java.nio.ByteBuffer buf) throws java.lang.Exception- Specified by:
 sendin classConnection- Throws:
 java.lang.Exception
 
- 
doSend
protected void doSend(byte[] data, int offset, int length) throws java.lang.Exception- Throws:
 java.lang.Exception
 
- 
flush
protected void flush()
 
- 
createBufferedOutputStream
protected java.io.BufferedOutputStream createBufferedOutputStream(java.io.OutputStream out)
 
- 
createBufferedInputStream
protected java.io.BufferedInputStream createBufferedInputStream(java.io.InputStream in)
 
- 
setSocketParameters
protected void setSocketParameters(java.net.Socket client_sock) throws java.net.SocketException- Throws:
 java.net.SocketException
 
- 
sendLocalAddress
protected void sendLocalAddress(Address local_addr) throws java.lang.Exception
Send the cookie first, then the our port number. If the cookie doesn't match the receiver's cookie, the receiver will reject the connection and close it.- Throws:
 java.lang.Exception
 
- 
readPeerAddress
protected Address readPeerAddress(java.net.Socket client_sock) throws java.lang.Exception
Reads the peer's address. First a cookie has to be sent which has to match my own cookie, otherwise the connection will be refused- Throws:
 java.lang.Exception
 
- 
toString
public java.lang.String toString()
- Overrides:
 toStringin classjava.lang.Object
 
- 
status
public java.lang.String status()
- Specified by:
 statusin classConnection
 
- 
isExpired
public boolean isExpired(long now)
- Specified by:
 isExpiredin classConnection
 
- 
isConnected
public boolean isConnected()
- Specified by:
 isConnectedin classConnection
 
- 
isConnectionPending
public boolean isConnectionPending()
- Specified by:
 isConnectionPendingin classConnection
 
- 
isOpen
public boolean isOpen()
- Specified by:
 isOpenin classConnection
 
- 
close
public void close() throws java.io.IOException- Throws:
 java.io.IOException
 
 - 
 
 -