7 #ifndef RESPONSEHANDLERS_H_ 8 #define RESPONSEHANDLERS_H_ 98 toEcho.resize(payloadSize);
99 payloadBuffer.
getArray(&toEcho[0], payloadSize);
105 control->startMessage(
CMD_ECHO, toEcho.size(), toEcho.size());
106 control->setRecipient(_echoFrom);
107 buffer->putArray<
char>(&toEcho[0], toEcho.size());
112 std::vector<char> toEcho;
138 public std::tr1::enable_shared_from_this<ServerChannelFindRequesterImpl>
142 const PeerInfo::const_shared_pointer& peer,
150 virtual std::tr1::shared_ptr<const PeerInfo> getPeerInfo()
OVERRIDE FINAL;
162 bool _responseRequired;
165 const PeerInfo::const_shared_pointer _peer;
190 static const std::string SERVER_CHANNEL_NAME;
192 void disconnect(Transport::shared_pointer
const & transport);
196 class BlockingServerTCPTransportCodec;
202 public std::tr1::enable_shared_from_this<ServerChannelRequesterImpl>
210 const std::string channelName,
214 static ChannelRequester::shared_pointer create(ChannelProvider::shared_pointer
const & provider,
215 Transport::shared_pointer
const & transport,
const std::string channelName,
219 virtual std::tr1::shared_ptr<const PeerInfo> getPeerInfo()
OVERRIDE FINAL;
224 ServerChannel::weak_pointer _serverChannel;
225 std::tr1::weak_ptr<detail::BlockingServerTCPTransportCodec> _transport;
226 const std::string _channelName;
260 buffer->putInt(_sid);
261 buffer->putInt(_cid);
289 public std::tr1::enable_shared_from_this<ServerChannelGetRequesterImpl>
296 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
297 Transport::shared_pointer
const & transport);
298 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
301 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
302 Transport::shared_pointer
const & transport,
303 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
307 virtual void getDone(
const epics::pvData::Status& status, ChannelGet::shared_pointer
const & channelGet,
308 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
309 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL;
312 ChannelGet::shared_pointer getChannelGet();
318 ChannelGet::shared_pointer _channelGet;
319 epics::pvData::PVStructure::shared_pointer _pvStructure;
320 epics::pvData::BitSet::shared_pointer _bitSet;
345 public std::tr1::enable_shared_from_this<ServerChannelPutRequesterImpl>
352 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
353 Transport::shared_pointer
const & transport);
354 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
357 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
358 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
364 virtual void getDone(
const epics::pvData::Status& status, ChannelPut::shared_pointer
const & channelPut,
365 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
366 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL;
369 ChannelPut::shared_pointer getChannelPut();
372 epics::pvData::BitSet::shared_pointer getPutBitSet();
373 epics::pvData::PVStructure::shared_pointer getPutPVStructure();
377 ChannelPut::shared_pointer _channelPut;
378 epics::pvData::BitSet::shared_pointer _bitSet;
379 epics::pvData::PVStructure::shared_pointer _pvStructure;
403 public std::tr1::enable_shared_from_this<ServerChannelPutGetRequesterImpl>
410 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
411 Transport::shared_pointer
const & transport);
412 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
415 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
416 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
420 epics::pvData::Structure::const_shared_pointer
const & putStructure,
421 epics::pvData::Structure::const_shared_pointer
const & getStructure)
OVERRIDE FINAL;
422 virtual void getGetDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
423 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
424 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL;
425 virtual void getPutDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
426 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
427 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL;
428 virtual void putGetDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
429 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
430 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL;
433 ChannelPutGet::shared_pointer getChannelPutGet();
436 epics::pvData::PVStructure::shared_pointer getPutGetPVStructure();
437 epics::pvData::BitSet::shared_pointer getPutGetBitSet();
442 ChannelPutGet::shared_pointer _channelPutGet;
443 epics::pvData::PVStructure::shared_pointer _pvPutStructure;
444 epics::pvData::BitSet::shared_pointer _pvPutBitSet;
445 epics::pvData::PVStructure::shared_pointer _pvGetStructure;
446 epics::pvData::BitSet::shared_pointer _pvGetBitSet;
472 public std::tr1::enable_shared_from_this<ServerMonitorRequesterImpl>
479 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
480 Transport::shared_pointer
const & transport);
481 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
484 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
485 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
489 Monitor::shared_pointer
const & monitor,
491 virtual void unlisten(Monitor::shared_pointer
const & monitor)
OVERRIDE FINAL;
492 virtual void monitorEvent(Monitor::shared_pointer
const & monitor)
OVERRIDE FINAL;
495 Monitor::shared_pointer getChannelMonitor();
496 virtual std::tr1::shared_ptr<ChannelRequest>
getOperation()
OVERRIDE FINAL {
return std::tr1::shared_ptr<ChannelRequest>(); }
499 void ack(
size_t cnt);
502 Monitor::shared_pointer _channelMonitor;
510 typedef std::list<epics::pvData::MonitorElementPtr> window_t;
511 window_t _window_closed;
537 public std::tr1::enable_shared_from_this<ServerChannelArrayRequesterImpl>
544 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
545 Transport::shared_pointer
const & transport);
546 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
549 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
550 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
554 ChannelArray::shared_pointer
const & channelArray,
555 epics::pvData::Array::const_shared_pointer
const & array)
OVERRIDE FINAL;
557 ChannelArray::shared_pointer
const & channelArray,
558 epics::pvData::PVArray::shared_pointer
const & pvArray)
OVERRIDE FINAL;
560 ChannelArray::shared_pointer
const & channelArray)
OVERRIDE FINAL;
562 ChannelArray::shared_pointer
const & channelArray)
OVERRIDE FINAL;
564 ChannelArray::shared_pointer
const & channelArray,
568 ChannelArray::shared_pointer getChannelArray();
571 epics::pvData::PVArray::shared_pointer getPVArray();
576 ChannelArray::shared_pointer _channelArray;
577 epics::pvData::PVArray::shared_pointer _pvArray;
645 public std::tr1::enable_shared_from_this<ServerChannelProcessRequesterImpl>
652 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
653 Transport::shared_pointer
const & transport);
654 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
657 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
658 Transport::shared_pointer
const & transport, epics::pvData::PVStructure::shared_pointer
const & pvRequest);
665 ChannelProcess::shared_pointer getChannelProcess();
672 ChannelProcess::shared_pointer _channelProcess;
698 public std::tr1::enable_shared_from_this<ServerGetFieldRequesterImpl>
705 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
706 Transport::shared_pointer
const & transport);
724 _ioid(ioid), _status(status) {
731 buffer->putInt(_ioid);
732 _status.serialize(buffer, control);
762 public std::tr1::enable_shared_from_this<ServerChannelRPCRequesterImpl>
769 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
770 Transport::shared_pointer
const & transport);
771 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
774 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
775 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
780 ChannelRPC::shared_pointer
const & channelRPC,
781 epics::pvData::PVStructure::shared_pointer
const & pvResponse)
OVERRIDE FINAL;
786 ChannelRPC::shared_pointer getChannelRPC();
792 ChannelRPC::shared_pointer _channelRPC;
793 epics::pvData::PVStructure::shared_pointer _pvResponse;
833 std::vector<ResponseHandler*> m_handlerTable;
virtual ~ServerDestroyRequestHandler()
virtual ~ServerGetHandler()
std::tr1::shared_ptr< ServerChannelRPCRequesterImpl > shared_pointer
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
virtual ~ServerChannelGetRequesterImpl()
virtual ~AbstractServerResponseHandler()
std::tr1::shared_ptr< ServerChannelGetRequesterImpl > shared_pointer
virtual ~ServerProcessHandler()
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
virtual ~ServerMonitorRequesterImpl()
std::tr1::shared_ptr< const ServerChannelProcessRequesterImpl > const_shared_pointer
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
virtual ~ServerGetFieldRequesterImpl()
Class that must be implemented by code that makes Timer requests.
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)
virtual ~ServerNoopResponse()
ServerGetHandler(ServerContextImpl::shared_pointer const &context)
virtual ~ServerChannelPutRequesterImpl()
std::tr1::shared_ptr< ServerGetFieldRequesterImpl > shared_pointer
ServerConnectionValidationHandler(ServerContextImpl::shared_pointer const &context)
AbstractServerResponseHandler(ServerContextImpl::shared_pointer const &context, std::string description)
TODO only here because of the Lockable.
std::tr1::shared_ptr< const Structure > StructureConstPtr
virtual ~ServerPutGetHandler()
ServerDestroyChannelHandlerTransportSender(pvAccessID cid, pvAccessID sid)
virtual ~ServerDestroyChannelHandler()
ServerCancelRequestHandler(ServerContextImpl::shared_pointer const &context)
ServerPutGetHandler(ServerContextImpl::shared_pointer const &context)
std::tr1::shared_ptr< const ServerChannelPutGetRequesterImpl > const_shared_pointer
virtual ~ServerChannelFindRequesterImpl()
virtual ~ServerEchoHandler()
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
std::tr1::shared_ptr< const ServerMonitorRequesterImpl > const_shared_pointer
virtual ~ServerCreateChannelHandler()
virtual ~EchoTransportSender()
EchoTransportSender(osiSockAddr *echoFrom, size_t payloadSize, epics::pvData::ByteBuffer &payloadBuffer)
virtual ~ServerCancelRequestHandler()
std::tr1::shared_ptr< ServerChannelArrayRequesterImpl > shared_pointer
ServerEchoHandler(ServerContextImpl::shared_pointer const &context)
ServerProcessHandler(ServerContextImpl::shared_pointer const &context)
ServerNoopResponse(ServerContextImpl::shared_pointer const &context, std::string description)
std::tr1::shared_ptr< const ServerChannelRPCRequesterImpl > const_shared_pointer
void getArray(T *values, std::size_t count)
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
ServerGetFieldHandlerTransportSender(const pvAccessID ioid, const epics::pvData::Status &status, Transport::shared_pointer const &)
virtual ~ServerDestroyChannelHandlerTransportSender()
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control) OVERRIDE FINAL
virtual ~ServerGetFieldHandlerTransportSender()
This class implements a Bytebuffer that is like the java.nio.ByteBuffer.
virtual ~ServerResponseHandler()
std::tr1::shared_ptr< ServerChannelPutRequesterImpl > shared_pointer
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control) OVERRIDE FINAL
std::tr1::shared_ptr< const Field > FieldConstPtr
std::tr1::shared_ptr< const ServerChannelArrayRequesterImpl > const_shared_pointer
virtual ~ServerChannelRPCRequesterImpl()
virtual ~ServerChannelProcessRequesterImpl()
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
virtual ~ServerChannelPutGetRequesterImpl()
Callback implemented by monitor clients.
virtual ~ServerGetFieldHandler()
virtual ~ServerChannelArrayRequesterImpl()
std::tr1::shared_ptr< const ServerChannelGetRequesterImpl > const_shared_pointer
std::tr1::shared_ptr< const ServerChannelPutRequesterImpl > const_shared_pointer
virtual ~ServerBadResponse()
virtual ~ServerChannelRequesterImpl()
std::tr1::shared_ptr< ServerChannelProcessRequesterImpl > shared_pointer
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
std::tr1::shared_ptr< ServerMonitorRequesterImpl > shared_pointer
ServerCreateChannelHandler(ServerContextImpl::shared_pointer const &context)
std::tr1::shared_ptr< ServerChannelPutGetRequesterImpl > shared_pointer
static const std::string SUPPORTED_PROTOCOL
ServerContextImpl::shared_pointer _context
ServerPutHandler(ServerContextImpl::shared_pointer context)
ServerDestroyChannelHandler(ServerContextImpl::shared_pointer const &context)
std::tr1::shared_ptr< const ServerGetFieldRequesterImpl > const_shared_pointer
ServerDestroyRequestHandler(ServerContextImpl::shared_pointer const &context)
ServerGetFieldHandler(ServerContextImpl::shared_pointer const &context)
virtual ~ServerRPCHandler()
virtual ~ServerPutHandler()
ServerBadResponse(ServerContextImpl::shared_pointer const &context)
virtual ~ServerMonitorHandler()
virtual ~ServerSearchHandler()
ServerRPCHandler(ServerContextImpl::shared_pointer const &context)
virtual ~ServerArrayHandler()
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control) OVERRIDE FINAL
std::tr1::shared_ptr< const ServerChannelRequesterImpl > const_shared_pointer
std::tr1::shared_ptr< ServerContextImpl > shared_pointer
ServerMonitorHandler(ServerContextImpl::shared_pointer const &context)
virtual ~ServerConnectionValidationHandler()
std::tr1::shared_ptr< ServerChannelRequesterImpl > shared_pointer
ServerArrayHandler(ServerContextImpl::shared_pointer const &context)
virtual std::tr1::shared_ptr< ChannelRequest > getOperation() OVERRIDE FINAL
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...