Class NonBlockingTCPTransport
- java.lang.Object
-
- org.epics.pvaccess.impl.remote.codec.AbstractCodec
-
- org.epics.pvaccess.impl.remote.codec.impl.NonBlockingAbstractCodec
-
- org.epics.pvaccess.impl.remote.codec.impl.NonBlockingSocketAbstractCodec
-
- org.epics.pvaccess.impl.remote.tcp.NonBlockingTCPTransport
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,ReadableByteChannel
,WritableByteChannel
,PollEvents
,Transport
,TransportSendControl
,org.epics.pvdata.pv.DeserializableControl
,org.epics.pvdata.pv.SerializableControl
- Direct Known Subclasses:
NonBlockingClientTCPTransport
,NonBlockingServerTCPTransport
public abstract class NonBlockingTCPTransport extends NonBlockingSocketAbstractCodec implements Transport
TCP transport implementation.- Version:
- $Id$
- Author:
- Matej Sekoranja
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.epics.pvaccess.impl.remote.codec.AbstractCodec
AbstractCodec.ReadMode, AbstractCodec.WriteMode
-
-
Field Summary
Fields Modifier and Type Field Description protected Context
context
Context instance.protected IntrospectionRegistry
incomingIR
Incoming (codes generated by other party) introspection registry.protected IntrospectionRegistry
outgoingIR
Outgoing (codes generated by this party) introspection registry.protected short
priority
Priority.protected byte
remoteTransportRevision
Remote side transport revision (minor).protected ResponseHandler
responseHandler
PVAS response handler.protected boolean
verified
-
Fields inherited from class org.epics.pvaccess.impl.remote.codec.impl.NonBlockingSocketAbstractCodec
channel, socketAddress
-
Fields inherited from class org.epics.pvaccess.impl.remote.codec.impl.NonBlockingAbstractCodec
key, poller
-
Fields inherited from class org.epics.pvaccess.impl.remote.codec.AbstractCodec
blockingProcessQueue, command, flags, logger, MAX_ENSURE_BUFFER_SIZE, MAX_ENSURE_DATA_SIZE, MAX_ENSURE_SIZE, MAX_MESSAGE_PROCESS, MAX_MESSAGE_SEND, payloadSize, readMode, remoteTransportSocketReceiveBufferSize, sendBuffer, sendQueue, sendTo, socketBuffer, totalBytesSent, version, writeMode, writeOpReady
-
-
Constructor Summary
Constructors Constructor Description NonBlockingTCPTransport(Context context, Poller poller, SocketChannel channel, ResponseHandler responseHandler, int receiveBufferSize, short priority)
TCP transport constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.epics.pvdata.pv.Field
cachedDeserialize(ByteBuffer buffer)
void
cachedSerialize(org.epics.pvdata.pv.Field field, ByteBuffer buffer)
void
changedTransport()
Notification that transport has changed (server restarted).Context
getContext()
Get context transport is living in.short
getPriority()
Transport priority.int
getReceiveBufferSize()
Get receive buffer size.InetSocketAddress
getRemoteAddress()
Get remote address.byte
getRevision()
Transport protocol revision.int
getSocketReceiveBufferSize()
Get socket receive buffer size.String
getType()
Get protocol type (tcp, udp, ssl, etc.).protected void
internalClose()
Called to any resources just before closing transportprotected void
internalDestroy()
void
processApplicationMessage()
void
processControlMessage()
void
setRemoteRevision(byte minor)
Set remote transport protocol revision.void
setRemoteTransportReceiveBufferSize(int receiveBufferSize)
Set remote transport receive buffer size.void
setRemoteTransportSocketReceiveBufferSize(int socketReceiveBufferSize)
Set remote transport socket receive buffer size.void
verified(org.epics.pvdata.pv.Status status)
Acknowledge that transport was verified.boolean
verify(long timeoutMs)
Waits (if needed) until transport is verified, i.e.-
Methods inherited from class org.epics.pvaccess.impl.remote.codec.impl.NonBlockingSocketAbstractCodec
getLastReadBufferSocketAddress, invalidDataStreamHandler, read, write
-
Methods inherited from class org.epics.pvaccess.impl.remote.codec.impl.NonBlockingAbstractCodec
close, isOpen, pollNotify, readPollOne, ready, registeredNotify, scheduleSend, sendBufferFull, sendCompleted, terminated, writePollOne
-
Methods inherited from class org.epics.pvaccess.impl.remote.codec.AbstractCodec
alignBuffer, alignData, alignedValue, clearSendQueue, endMessage, enqueueSendRequest, enqueueSendRequest, ensureBuffer, ensureData, flush, flushSerializeBuffer, processRead, processSendQueue, processWrite, putControlMessage, send, setByteOrder, setRecipient, setSenderThread, startMessage
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.epics.pvaccess.impl.remote.Transport
acquire, aliveNotification, authNZInitialize, authNZMessage, enqueueSendRequest, getSecuritySession, release, setByteOrder
-
-
-
-
Field Detail
-
context
protected final Context context
Context instance.
-
priority
protected final short priority
Priority. NOTE: Priority cannot just be changed, since it is registered in transport registry with given priority.
-
responseHandler
protected final ResponseHandler responseHandler
PVAS response handler.
-
incomingIR
protected final IntrospectionRegistry incomingIR
Incoming (codes generated by other party) introspection registry.
-
outgoingIR
protected final IntrospectionRegistry outgoingIR
Outgoing (codes generated by this party) introspection registry.
-
remoteTransportRevision
protected byte remoteTransportRevision
Remote side transport revision (minor).
-
verified
protected boolean verified
-
-
Constructor Detail
-
NonBlockingTCPTransport
public NonBlockingTCPTransport(Context context, Poller poller, SocketChannel channel, ResponseHandler responseHandler, int receiveBufferSize, short priority) throws SocketException
TCP transport constructor.- Parameters:
context
- context where transport lives in.poller
- poller to use.channel
- used socket channel.responseHandler
- response handler used to process PVA headers.receiveBufferSize
- receive buffer size.priority
- transport priority.- Throws:
SocketException
- thrown on any socket exception.
-
-
Method Detail
-
internalDestroy
protected void internalDestroy()
- Overrides:
internalDestroy
in classNonBlockingSocketAbstractCodec
-
internalClose
protected void internalClose()
Called to any resources just before closing transport
-
getType
public String getType()
Description copied from interface:Transport
Get protocol type (tcp, udp, ssl, etc.).
-
getRemoteAddress
public InetSocketAddress getRemoteAddress()
Description copied from interface:Transport
Get remote address.- Specified by:
getRemoteAddress
in interfaceTransport
- Returns:
- remote address.
-
getContext
public Context getContext()
Description copied from interface:Transport
Get context transport is living in.- Specified by:
getContext
in interfaceTransport
- Returns:
- context transport is living in.
-
getRevision
public byte getRevision()
Description copied from interface:Transport
Transport protocol revision.- Specified by:
getRevision
in interfaceTransport
- Returns:
- protocol revision.
-
getReceiveBufferSize
public int getReceiveBufferSize()
Description copied from interface:Transport
Get receive buffer size.- Specified by:
getReceiveBufferSize
in interfaceTransport
- Returns:
- receive buffer size.
-
getSocketReceiveBufferSize
public int getSocketReceiveBufferSize()
Description copied from interface:Transport
Get socket receive buffer size.- Specified by:
getSocketReceiveBufferSize
in interfaceTransport
- Returns:
- socket receive buffer size.
-
getPriority
public short getPriority()
Description copied from interface:Transport
Transport priority.- Specified by:
getPriority
in interfaceTransport
- Returns:
- protocol priority.
-
setRemoteRevision
public void setRemoteRevision(byte minor)
Description copied from interface:Transport
Set remote transport protocol revision.- Specified by:
setRemoteRevision
in interfaceTransport
- Parameters:
minor
- protocol revision.
-
setRemoteTransportReceiveBufferSize
public void setRemoteTransportReceiveBufferSize(int receiveBufferSize)
Description copied from interface:Transport
Set remote transport receive buffer size.- Specified by:
setRemoteTransportReceiveBufferSize
in interfaceTransport
- Parameters:
receiveBufferSize
- receive buffer size.
-
setRemoteTransportSocketReceiveBufferSize
public void setRemoteTransportSocketReceiveBufferSize(int socketReceiveBufferSize)
Description copied from interface:Transport
Set remote transport socket receive buffer size.- Specified by:
setRemoteTransportSocketReceiveBufferSize
in interfaceTransport
- Parameters:
socketReceiveBufferSize
- remote socket receive buffer size.
-
changedTransport
public void changedTransport()
Description copied from interface:Transport
Notification that transport has changed (server restarted).- Specified by:
changedTransport
in interfaceTransport
-
processControlMessage
public void processControlMessage()
- Specified by:
processControlMessage
in classAbstractCodec
-
processApplicationMessage
public void processApplicationMessage() throws IOException
- Specified by:
processApplicationMessage
in classAbstractCodec
- Throws:
IOException
-
cachedDeserialize
public org.epics.pvdata.pv.Field cachedDeserialize(ByteBuffer buffer)
- Specified by:
cachedDeserialize
in interfaceorg.epics.pvdata.pv.DeserializableControl
-
cachedSerialize
public void cachedSerialize(org.epics.pvdata.pv.Field field, ByteBuffer buffer)
- Specified by:
cachedSerialize
in interfaceorg.epics.pvdata.pv.SerializableControl
-
verified
public void verified(org.epics.pvdata.pv.Status status)
Description copied from interface:Transport
Acknowledge that transport was verified.
-
verify
public boolean verify(long timeoutMs)
Description copied from interface:Transport
Waits (if needed) until transport is verified, i.e. verified() method is being called.
-
-