14 #ifdef epicsExportSharedSymbols 15 # define blockingTCPEpicsExportSharedSymbols 16 # undef epicsExportSharedSymbols 21 #include <epicsTime.h> 22 #include <epicsThread.h> 24 #include <pv/byteBuffer.h> 25 #include <pv/pvType.h> 30 #ifdef blockingTCPEpicsExportSharedSymbols 31 # define epicsExportSharedSymbols 32 # undef blockingTCPEpicsExportSharedSymbols 35 #include <pv/pvaConstants.h> 36 #include <pv/remote.h> 37 #include <pv/transportRegistry.h> 38 #include <pv/introspectionRegistry.h> 39 #include <pv/inetAddressUtil.h> 44 class ClientChannelImpl;
51 class BlockingTCPConnector {
53 POINTER_DEFINITIONS(BlockingTCPConnector);
55 BlockingTCPConnector(Context::shared_pointer
const & context,
int receiveBufferSize,
56 float beaconInterval);
58 Transport::shared_pointer connect(std::tr1::shared_ptr<ClientChannelImpl>
const & client,
59 ResponseHandler::shared_pointer
const & responseHandler, osiSockAddr& address,
60 epics::pvData::int8 transportRevision, epics::pvData::int16 priority);
65 static const int LOCK_TIMEOUT = 20*1000;
70 Context::weak_pointer _context;
75 int _receiveBufferSize;
80 float _heartbeatInterval;
89 SOCKET tryConnect(osiSockAddr& address,
int tries);
98 class BlockingTCPAcceptor :
public epicsThreadRunable {
100 POINTER_DEFINITIONS(BlockingTCPAcceptor);
102 BlockingTCPAcceptor(Context::shared_pointer
const & context,
103 ResponseHandler::shared_pointer
const & responseHandler,
104 const osiSockAddr& addr,
int receiveBufferSize);
106 virtual ~BlockingTCPAcceptor();
113 return &_bindAddress;
127 Context::shared_pointer _context;
132 ResponseHandler::shared_pointer _responseHandler;
137 osiSockAddr _bindAddress;
142 SOCKET _serverSocketChannel;
147 int _receiveBufferSize;
154 epics::pvData::Mutex _mutex;
168 bool validateConnection(Transport::shared_pointer
const & transport,
const char* address);
const osiSockAddr * getBindAddress()
Bind socket address.
void destroy()
Destroy acceptor (stop listening).
virtual void authNZMessage(epics::pvData::PVStructure::shared_pointer const &data)=0
Pass data to the active security plug-in session.