10#ifdef epicsExportSharedSymbols
11# define remoteEpicsExportSharedSymbols
12# undef epicsExportSharedSymbols
20#include <pv/serialize.h>
22#include <pv/byteBuffer.h>
25#include <pv/sharedPtr.h>
27#ifdef remoteEpicsExportSharedSymbols
28# define epicsExportSharedSymbols
29# undef remoteEpicsExportSharedSymbols
32#include <pv/pvaConstants.h>
33#include <pv/configuration.h>
34#include <pv/fairQueue.h>
35#include <pv/pvaDefs.h>
38#include <pv/pvAccess.h>
43class TransportRegistry;
44class ClientChannelImpl;
85enum ApplicationCommands {
87 CMD_CONNECTION_VALIDATION = 1,
90 CMD_SEARCH_RESPONSE = 4,
93 CMD_CREATE_CHANNEL = 7,
94 CMD_DESTROY_CHANNEL = 8,
95 CMD_CONNECTION_VALIDATED = 9,
101 CMD_DESTROY_REQUEST = 15,
105 CMD_MULTIPLE_DATA = 19,
107 CMD_CANCEL_REQUEST = 21,
111enum ControlCommands {
114 CMD_SET_ENDIANESS = 2
117void hackAroundRTEMSSocketInterrupt();
129 virtual void endMessage() = 0;
131 virtual void flush(
bool lastMessageCompleted) = 0;
133 virtual void setRecipient(osiSockAddr
const & sendTo) = 0;
160class ClientChannelImpl;
161class SecuritySession;
170 static size_t num_instances;
180 virtual bool acquire(std::tr1::shared_ptr<ClientChannelImpl>
const & client) = 0;
186 virtual void release(pvAccessID clientId) = 0;
194 virtual const osiSockAddr& getRemoteAddress()
const = 0;
196 virtual const std::string& getRemoteName()
const = 0;
272 virtual void authNZMessage(epics::pvData::PVStructure::shared_pointer
const & data) = 0;
274 size_t _totalBytesSent;
275 size_t _totalBytesRecv;
291 virtual epics::pvData::Timer::shared_pointer getTimer() = 0;
293 virtual TransportRegistry* getTransportRegistry() = 0;
298 virtual Configuration::const_shared_pointer getConfiguration() = 0;
306 virtual std::tr1::shared_ptr<Channel> getChannel(pvAccessID
id) = 0;
307 virtual Transport::shared_pointer getSearchTransport() = 0;
317 static size_t num_instances;
333 handleResponse(osiSockAddr* responseFrom, Transport::shared_pointer
const & transport,
basic_ostream< _CharT, _Traits > & flush(basic_ostream< _CharT, _Traits > &__os)
The interface through which Operations (get, put, monitor, ...) are initiated.
ConnectionState
Channel connection status.
Not public IF, used by Transports, etc.
virtual void newServerDetected()=0
due to ClientContextImpl
Interface defining response handler.
std::string _description
Response hanlder description.
epics::pvData::int32 _debugLevel
Debug flag.
virtual void handleResponse(osiSockAddr *responseFrom, Transport::shared_pointer const &transport, epics::pvData::int8 version, epics::pvData::int8 command, std::size_t payloadSize, epics::pvData::ByteBuffer *payloadBuffer)
Handle response.
A request that expects an response.
virtual void response(Transport::shared_pointer const &transport, epics::pvData::int8 version, epics::pvData::ByteBuffer *payloadBuffer)=0
Notification response.
virtual pvAccessID getIOID() const =0
Get I/O ID.
virtual void timeout()=0
Timeout notification.
virtual void cancel()=0
Cancel response request (always to be called to complete/destroy).
virtual std::tr1::shared_ptr< ChannelBaseRequester > getRequester()=0
used by MessageHandler and reportChannelStateChange().
virtual void reportStatus(Channel::ConnectionState status)=0
Report status to clients (e.g.
Interface defining transport (connection).
virtual void close()=0
Close transport.
virtual void authNZMessage(epics::pvData::PVStructure::shared_pointer const &data)=0
Pass data to the active security plug-in session.
virtual void enqueueSendRequest(TransportSender::shared_pointer const &sender)=0
Enqueue send request.
virtual epics::pvData::int16 getPriority() const =0
Transport priority.
virtual void waitJoin()
Call after close() to wait for any worker threads to exit.
virtual void release(pvAccessID clientId)=0
Releases transport.
virtual std::string getType() const =0
Get protocol type (tcp, udp, ssl, etc.).
virtual bool isClosed()=0
Check connection status.
virtual void setByteOrder(int byteOrder)=0
Set byte order.
virtual bool verify(epics::pvData::int32 timeoutMs)=0
Waits (if needed) until transport is verified, i.e.
virtual bool acquire(std::tr1::shared_ptr< ClientChannelImpl > const &client)=0
Acquires transport.
virtual void setRemoteTransportSocketReceiveBufferSize(std::size_t socketReceiveBufferSize)=0
Set remote transport socket receive buffer size.
virtual std::size_t getReceiveBufferSize() const =0
Get receive buffer size.
virtual void flushSendQueue()=0
Flush send queue (sent messages).
virtual void verified(epics::pvData::Status const &status)=0
Notify transport that it is has been verified.
virtual void setRemoteTransportReceiveBufferSize(std::size_t receiveBufferSize)=0
Set remote transport receive buffer size.
Interface defining transport send control.
Interface defining transport sender (instance sending data over transport).
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control)=0
Called by transport.
@ QOS_REPLY_REQUIRED
Require reply (acknowledgment for reliable operation).
@ QOS_DESTROY
Destroy option.
@ QOS_DEFAULT
Default behavior.
@ QOS_PROCESS
Process option.
@ QOS_INIT
Initialize option.
@ QOS_SHARE
Share data option.
@ QOS_BESY_EFFORT
Best-effort option (no reply).
Copyright - See the COPYRIGHT that is included with this distribution.