Class BlockingTCPTransport
- java.lang.Object
-
- org.epics.pvaccess.impl.remote.codec.AbstractCodec
-
- org.epics.pvaccess.impl.remote.codec.impl.BlockingAbstractCodec
-
- org.epics.pvaccess.impl.remote.codec.impl.BlockingSocketAbstractCodec
-
- org.epics.pvaccess.impl.remote.tcp.BlockingTCPTransport
-
- All Implemented Interfaces:
Closeable,AutoCloseable,Channel,ReadableByteChannel,WritableByteChannel,Transport,TransportSendControl,org.epics.pvdata.pv.DeserializableControl,org.epics.pvdata.pv.SerializableControl
- Direct Known Subclasses:
BlockingClientTCPTransport,BlockingServerTCPTransport
public abstract class BlockingTCPTransport extends BlockingSocketAbstractCodec 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 ContextcontextContext instance.protected IntrospectionRegistryincomingIRIncoming (codes generated by other party) introspection registry.protected IntrospectionRegistryoutgoingIROutgoing (codes generated by this party) introspection registry.protected shortpriorityPriority.protected byteremoteTransportRevisionRemote side transport revision (minor).protected ResponseHandlerresponseHandlerPVAS response handler.protected booleanverifiedprotected booleanverifiedCalled-
Fields inherited from class org.epics.pvaccess.impl.remote.codec.impl.BlockingSocketAbstractCodec
channel, socketAddress
-
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 BlockingTCPTransport(Context context, 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.FieldcachedDeserialize(ByteBuffer buffer)voidcachedSerialize(org.epics.pvdata.pv.Field field, ByteBuffer buffer)voidchangedTransport()Notification that transport has changed (server restarted).ContextgetContext()Get context transport is living in.shortgetPriority()Transport priority.intgetReceiveBufferSize()Get receive buffer size.InetSocketAddressgetRemoteAddress()Get remote address.bytegetRevision()Transport protocol revision.intgetSocketReceiveBufferSize()Get socket receive buffer size.StringgetType()Get protocol type (tcp, udp, ssl, etc.).protected voidinternalClose()Called to any resources just before closing transportprotected voidinternalDestroy()voidprocessApplicationMessage()voidprocessControlMessage()voidsetRemoteRevision(byte minor)Set remote transport protocol revision.voidsetRemoteTransportReceiveBufferSize(int receiveBufferSize)Set remote transport receive buffer size.voidsetRemoteTransportSocketReceiveBufferSize(int socketReceiveBufferSize)Set remote transport socket receive buffer size.voidverified(org.epics.pvdata.pv.Status status)Acknowledge that transport was verified.booleanverify(long timeoutMs)Waits (if needed) until transport is verified, i.e.-
Methods inherited from class org.epics.pvaccess.impl.remote.codec.impl.BlockingSocketAbstractCodec
getLastReadBufferSocketAddress, invalidDataStreamHandler, read, write
-
Methods inherited from class org.epics.pvaccess.impl.remote.codec.impl.BlockingAbstractCodec
close, isOpen, readPollOne, receiveThread, scheduleSend, sendBufferFull, sendCompleted, sendThread, start, 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).
-
verifiedCalled
protected boolean verifiedCalled
-
verified
protected boolean verified
-
-
Constructor Detail
-
BlockingTCPTransport
public BlockingTCPTransport(Context context, SocketChannel channel, ResponseHandler responseHandler, int receiveBufferSize, short priority) throws SocketException
TCP transport constructor.- Parameters:
context- context where transport lives in.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:
internalDestroyin classBlockingSocketAbstractCodec
-
internalClose
protected void internalClose()
Called to any resources just before closing transport
-
getType
public String getType()
Description copied from interface:TransportGet protocol type (tcp, udp, ssl, etc.).
-
getRemoteAddress
public InetSocketAddress getRemoteAddress()
Description copied from interface:TransportGet remote address.- Specified by:
getRemoteAddressin interfaceTransport- Returns:
- remote address.
-
getContext
public Context getContext()
Description copied from interface:TransportGet context transport is living in.- Specified by:
getContextin interfaceTransport- Returns:
- context transport is living in.
-
getRevision
public byte getRevision()
Description copied from interface:TransportTransport protocol revision.- Specified by:
getRevisionin interfaceTransport- Returns:
- protocol revision.
-
getReceiveBufferSize
public int getReceiveBufferSize()
Description copied from interface:TransportGet receive buffer size.- Specified by:
getReceiveBufferSizein interfaceTransport- Returns:
- receive buffer size.
-
getSocketReceiveBufferSize
public int getSocketReceiveBufferSize()
Description copied from interface:TransportGet socket receive buffer size.- Specified by:
getSocketReceiveBufferSizein interfaceTransport- Returns:
- socket receive buffer size.
-
getPriority
public short getPriority()
Description copied from interface:TransportTransport priority.- Specified by:
getPriorityin interfaceTransport- Returns:
- protocol priority.
-
setRemoteRevision
public void setRemoteRevision(byte minor)
Description copied from interface:TransportSet remote transport protocol revision.- Specified by:
setRemoteRevisionin interfaceTransport- Parameters:
minor- protocol revision.
-
setRemoteTransportReceiveBufferSize
public void setRemoteTransportReceiveBufferSize(int receiveBufferSize)
Description copied from interface:TransportSet remote transport receive buffer size.- Specified by:
setRemoteTransportReceiveBufferSizein interfaceTransport- Parameters:
receiveBufferSize- receive buffer size.
-
setRemoteTransportSocketReceiveBufferSize
public void setRemoteTransportSocketReceiveBufferSize(int socketReceiveBufferSize)
Description copied from interface:TransportSet remote transport socket receive buffer size.- Specified by:
setRemoteTransportSocketReceiveBufferSizein interfaceTransport- Parameters:
socketReceiveBufferSize- remote socket receive buffer size.
-
changedTransport
public void changedTransport()
Description copied from interface:TransportNotification that transport has changed (server restarted).- Specified by:
changedTransportin interfaceTransport
-
processControlMessage
public void processControlMessage()
- Specified by:
processControlMessagein classAbstractCodec
-
processApplicationMessage
public void processApplicationMessage() throws IOException- Specified by:
processApplicationMessagein classAbstractCodec- Throws:
IOException
-
cachedDeserialize
public org.epics.pvdata.pv.Field cachedDeserialize(ByteBuffer buffer)
- Specified by:
cachedDeserializein interfaceorg.epics.pvdata.pv.DeserializableControl
-
cachedSerialize
public void cachedSerialize(org.epics.pvdata.pv.Field field, ByteBuffer buffer)- Specified by:
cachedSerializein interfaceorg.epics.pvdata.pv.SerializableControl
-
verified
public void verified(org.epics.pvdata.pv.Status status)
Description copied from interface:TransportAcknowledge that transport was verified.
-
verify
public boolean verify(long timeoutMs)
Description copied from interface:TransportWaits (if needed) until transport is verified, i.e. verified() method is being called.
-
-