7#ifndef RESPONSEHANDLERS_H_
8#define RESPONSEHANDLERS_H_
14#include <pv/serverContext.h>
16#include <pv/serverChannelImpl.h>
17#include <pv/baseChannelRequester.h>
18#include <pv/securityImpl.h>
27 ServerContextImpl::shared_pointer _context;
29 AbstractServerResponseHandler(ServerContextImpl::shared_pointer
const & context,
std::string description) :
30 ResponseHandler(context.
get(), description), _context(context) {
33 virtual ~AbstractServerResponseHandler() {}
39class ServerBadResponse :
public AbstractServerResponseHandler {
41 ServerBadResponse(ServerContextImpl::shared_pointer
const & context) :
42 AbstractServerResponseHandler(context,
"Bad request") {
45 virtual ~ServerBadResponse() {
56class ServerConnectionValidationHandler :
public AbstractServerResponseHandler {
58 ServerConnectionValidationHandler(ServerContextImpl::shared_pointer
const & context) :
59 AbstractServerResponseHandler(context,
"Connection validation") {
61 virtual ~ServerConnectionValidationHandler() {}
71class ServerNoopResponse :
public AbstractServerResponseHandler {
73 ServerNoopResponse(ServerContextImpl::shared_pointer
const & context,
std::string description) :
74 AbstractServerResponseHandler(context, description) {
76 virtual ~ServerNoopResponse() {}
82class ServerEchoHandler :
public AbstractServerResponseHandler {
84 ServerEchoHandler(ServerContextImpl::shared_pointer
const & context) :
85 AbstractServerResponseHandler(context,
"Echo request") {
87 virtual ~ServerEchoHandler() {}
97 memcpy(&_echoFrom, echoFrom,
sizeof(osiSockAddr));
98 toEcho.
resize(payloadSize);
100 payloadBuffer.
getArray(&toEcho[0], payloadSize);
104 virtual ~EchoTransportSender() {}
107 control->startMessage(CMD_ECHO, toEcho.
size(), toEcho.
size());
108 control->setRecipient(_echoFrom);
109 if (toEcho.
size() > 0) {
110 buffer->putArray<
char>(&toEcho[0], toEcho.
size());
115 osiSockAddr _echoFrom;
116 std::vector<char> toEcho;
124class ServerSearchHandler :
public AbstractServerResponseHandler
129 ServerSearchHandler(ServerContextImpl::shared_pointer
const & context);
130 virtual ~ServerSearchHandler() {}
138class ServerChannelFindRequesterImpl:
139 public ChannelFindRequester,
142 public std::tr1::enable_shared_from_this<ServerChannelFindRequesterImpl>
145 ServerChannelFindRequesterImpl(ServerContextImpl::shared_pointer
const & context,
146 const PeerInfo::const_shared_pointer& peer,
148 virtual ~ServerChannelFindRequesterImpl() {}
151 epics::pvData::int32 cid, osiSockAddr
const & sendTo,
bool responseRequired,
bool serverSearch);
152 virtual void channelFindResult(
const epics::pvData::Status& status, ChannelFind::shared_pointer
const & channelFind,
bool wasFound) OVERRIDE FINAL;
154 virtual std::tr1::shared_ptr<const PeerInfo> getPeerInfo() OVERRIDE FINAL;
155 virtual
void send(
epics::
pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
157 virtual
void callback() OVERRIDE FINAL;
166 bool _responseRequired;
168 const ServerContextImpl::shared_pointer _context;
169 const PeerInfo::const_shared_pointer _peer;
180class ServerCreateChannelHandler : public AbstractServerResponseHandler
183 ServerCreateChannelHandler(ServerContextImpl::shared_pointer
const & context)
184 :AbstractServerResponseHandler(context,
"Create channel request")
186 virtual ~ServerCreateChannelHandler() {}
196 void disconnect(Transport::shared_pointer
const & transport);
200class BlockingServerTCPTransportCodec;
203class ServerChannelRequesterImpl :
204 public ChannelRequester,
205 public TransportSender,
206 public std::tr1::enable_shared_from_this<ServerChannelRequesterImpl>
208 friend class ServerCreateChannelHandler;
210 typedef std::tr1::shared_ptr<ServerChannelRequesterImpl> shared_pointer;
211 typedef std::tr1::shared_ptr<const ServerChannelRequesterImpl> const_shared_pointer;
213 ServerChannelRequesterImpl(Transport::shared_pointer
const & transport,
215 const pvAccessID cid);
217 virtual ~ServerChannelRequesterImpl() {}
218 static ChannelRequester::shared_pointer create(ChannelProvider::shared_pointer
const & provider,
219 Transport::shared_pointer
const & transport,
const std::string channelName,
220 const pvAccessID cid);
221 virtual void channelCreated(
const epics::pvData::Status& status, Channel::shared_pointer
const & channel) OVERRIDE FINAL;
222 virtual void channelStateChange(Channel::shared_pointer
const & c,
const Channel::ConnectionState isConnected) OVERRIDE FINAL;
223 virtual std::tr1::shared_ptr<const PeerInfo> getPeerInfo() OVERRIDE FINAL;
224 virtual
std::
string getRequesterName() OVERRIDE FINAL;
225 virtual
void message(
std::
string const & message,
epics::pvData::MessageType messageType) OVERRIDE FINAL;
226 virtual
void send(
epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
228 ServerChannel::weak_pointer _serverChannel;
229 std::tr1::weak_ptr<
detail::BlockingServerTCPTransportCodec> _transport;
230 const
std::
string _channelName;
231 const pvAccessID _cid;
233 epics::pvData::Status _status;
234 epics::pvData::Mutex _mutex;
241class ServerDestroyChannelHandler : public AbstractServerResponseHandler
244 ServerDestroyChannelHandler(ServerContextImpl::shared_pointer
const & context) :
245 AbstractServerResponseHandler(context,
"Destroy channel request") {
247 virtual ~ServerDestroyChannelHandler() {}
255class ServerDestroyChannelHandlerTransportSender :
public TransportSender
258 ServerDestroyChannelHandlerTransportSender(pvAccessID cid, pvAccessID sid): _cid(cid), _sid(sid) {
261 virtual ~ServerDestroyChannelHandlerTransportSender() {}
264 buffer->putInt(_sid);
265 buffer->putInt(_cid);
277class ServerGetHandler :
public AbstractServerResponseHandler
280 ServerGetHandler(ServerContextImpl::shared_pointer
const & context) :
281 AbstractServerResponseHandler(context,
"Get request") {
283 virtual ~ServerGetHandler() {}
290class ServerChannelGetRequesterImpl :
291 public BaseChannelRequester,
293 public std::tr1::enable_shared_from_this<ServerChannelGetRequesterImpl>
296 typedef std::tr1::shared_ptr<ServerChannelGetRequesterImpl> shared_pointer;
297 typedef std::tr1::shared_ptr<const ServerChannelGetRequesterImpl> const_shared_pointer;
299 ServerChannelGetRequesterImpl(ServerContextImpl::shared_pointer
const & context,
300 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
301 Transport::shared_pointer
const & transport);
302 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
304 static ChannelGetRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
305 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
306 Transport::shared_pointer
const & transport,
307 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
308 virtual ~ServerChannelGetRequesterImpl() {}
309 virtual void channelGetConnect(
const epics::pvData::Status& status, ChannelGet::shared_pointer
const & channelGet,
310 epics::pvData::Structure::const_shared_pointer
const & structure) OVERRIDE FINAL;
311 virtual void getDone(
const epics::pvData::Status& status, ChannelGet::shared_pointer
const & channelGet,
312 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
313 epics::pvData::BitSet::shared_pointer
const & bitSet) OVERRIDE FINAL;
314 virtual void destroy() OVERRIDE FINAL;
316 ChannelGet::shared_pointer getChannelGet();
317 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelGet(); }
322 ChannelGet::shared_pointer _channelGet;
323 epics::pvData::PVStructure::shared_pointer _pvStructure;
324 epics::pvData::BitSet::shared_pointer _bitSet;
333class ServerPutHandler :
public AbstractServerResponseHandler
336 ServerPutHandler(ServerContextImpl::shared_pointer context) :
337 AbstractServerResponseHandler(context,
"Put request") {
339 virtual ~ServerPutHandler() {}
346class ServerChannelPutRequesterImpl :
347 public BaseChannelRequester,
349 public std::tr1::enable_shared_from_this<ServerChannelPutRequesterImpl>
352 typedef std::tr1::shared_ptr<ServerChannelPutRequesterImpl> shared_pointer;
353 typedef std::tr1::shared_ptr<const ServerChannelPutRequesterImpl> const_shared_pointer;
355 ServerChannelPutRequesterImpl(ServerContextImpl::shared_pointer
const & context,
356 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
357 Transport::shared_pointer
const & transport);
358 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
360 static ChannelPutRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
361 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
362 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
364 virtual ~ServerChannelPutRequesterImpl() {}
365 virtual void channelPutConnect(
const epics::pvData::Status& status, ChannelPut::shared_pointer
const & channelPut,
366 epics::pvData::Structure::const_shared_pointer
const & structure) OVERRIDE FINAL;
367 virtual void putDone(
const epics::pvData::Status& status, ChannelPut::shared_pointer
const & channelPut) OVERRIDE FINAL;
368 virtual void getDone(
const epics::pvData::Status& status, ChannelPut::shared_pointer
const & channelPut,
369 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
370 epics::pvData::BitSet::shared_pointer
const & bitSet) OVERRIDE FINAL;
371 virtual void destroy() OVERRIDE FINAL;
373 ChannelPut::shared_pointer getChannelPut();
374 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelPut(); }
376 epics::pvData::BitSet::shared_pointer getPutBitSet();
377 epics::pvData::PVStructure::shared_pointer getPutPVStructure();
381 ChannelPut::shared_pointer _channelPut;
382 epics::pvData::BitSet::shared_pointer _bitSet;
383 epics::pvData::PVStructure::shared_pointer _pvStructure;
391class ServerPutGetHandler :
public AbstractServerResponseHandler
394 ServerPutGetHandler(ServerContextImpl::shared_pointer
const & context) :
395 AbstractServerResponseHandler(context,
"Put-get request") {
398 virtual ~ServerPutGetHandler() {}
404class ServerChannelPutGetRequesterImpl :
405 public BaseChannelRequester,
407 public std::tr1::enable_shared_from_this<ServerChannelPutGetRequesterImpl>
410 typedef std::tr1::shared_ptr<ServerChannelPutGetRequesterImpl> shared_pointer;
411 typedef std::tr1::shared_ptr<const ServerChannelPutGetRequesterImpl> const_shared_pointer;
413 ServerChannelPutGetRequesterImpl(ServerContextImpl::shared_pointer
const & context,
414 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
415 Transport::shared_pointer
const & transport);
416 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
418 static ChannelPutGetRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
419 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
420 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
421 virtual ~ServerChannelPutGetRequesterImpl() {}
423 virtual void channelPutGetConnect(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
424 epics::pvData::Structure::const_shared_pointer
const & putStructure,
425 epics::pvData::Structure::const_shared_pointer
const & getStructure) OVERRIDE FINAL;
426 virtual void getGetDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
427 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
428 epics::pvData::BitSet::shared_pointer
const & bitSet) OVERRIDE FINAL;
429 virtual void getPutDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
430 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
431 epics::pvData::BitSet::shared_pointer
const & bitSet) OVERRIDE FINAL;
432 virtual void putGetDone(
const epics::pvData::Status& status, ChannelPutGet::shared_pointer
const & channelPutGet,
433 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
434 epics::pvData::BitSet::shared_pointer
const & bitSet) OVERRIDE FINAL;
435 virtual void destroy() OVERRIDE FINAL;
437 ChannelPutGet::shared_pointer getChannelPutGet();
438 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelPutGet(); }
440 epics::pvData::PVStructure::shared_pointer getPutGetPVStructure();
441 epics::pvData::BitSet::shared_pointer getPutGetBitSet();
446 ChannelPutGet::shared_pointer _channelPutGet;
447 epics::pvData::PVStructure::shared_pointer _pvPutStructure;
448 epics::pvData::BitSet::shared_pointer _pvPutBitSet;
449 epics::pvData::PVStructure::shared_pointer _pvGetStructure;
450 epics::pvData::BitSet::shared_pointer _pvGetBitSet;
459class ServerMonitorHandler :
public AbstractServerResponseHandler
462 ServerMonitorHandler(ServerContextImpl::shared_pointer
const & context) :
463 AbstractServerResponseHandler(context,
"Monitor request") {
465 virtual ~ServerMonitorHandler() {}
473class ServerMonitorRequesterImpl :
474 public BaseChannelRequester,
476 public std::tr1::enable_shared_from_this<ServerMonitorRequesterImpl>
479 typedef std::tr1::shared_ptr<ServerMonitorRequesterImpl> shared_pointer;
480 typedef std::tr1::shared_ptr<const ServerMonitorRequesterImpl> const_shared_pointer;
482 ServerMonitorRequesterImpl(ServerContextImpl::shared_pointer
const & context,
483 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
484 Transport::shared_pointer
const & transport);
485 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
487 static shared_pointer create(ServerContextImpl::shared_pointer
const & context,
488 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
489 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
490 virtual ~ServerMonitorRequesterImpl() {}
493 Monitor::shared_pointer
const & monitor,
495 virtual void unlisten(Monitor::shared_pointer
const & monitor) OVERRIDE FINAL;
496 virtual void monitorEvent(Monitor::shared_pointer
const & monitor) OVERRIDE FINAL;
497 virtual void destroy() OVERRIDE FINAL;
499 Monitor::shared_pointer getChannelMonitor();
500 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return std::tr1::shared_ptr<ChannelRequest>(); }
503 void ack(
size_t cnt);
506 Monitor::shared_pointer _channelMonitor;
515 window_t _window_closed;
525class ServerArrayHandler :
public AbstractServerResponseHandler
528 ServerArrayHandler(ServerContextImpl::shared_pointer
const & context) :
529 AbstractServerResponseHandler(context,
"Array request") {
531 virtual ~ServerArrayHandler() {}
538class ServerChannelArrayRequesterImpl :
539 public BaseChannelRequester,
541 public std::tr1::enable_shared_from_this<ServerChannelArrayRequesterImpl>
544 typedef std::tr1::shared_ptr<ServerChannelArrayRequesterImpl> shared_pointer;
545 typedef std::tr1::shared_ptr<const ServerChannelArrayRequesterImpl> const_shared_pointer;
547 ServerChannelArrayRequesterImpl(ServerContextImpl::shared_pointer
const & context,
548 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
549 Transport::shared_pointer
const & transport);
550 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
552 static ChannelArrayRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
553 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
554 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
555 virtual ~ServerChannelArrayRequesterImpl() {}
558 ChannelArray::shared_pointer
const & channelArray,
559 epics::pvData::Array::const_shared_pointer
const & array) OVERRIDE FINAL;
561 ChannelArray::shared_pointer
const & channelArray,
562 epics::pvData::PVArray::shared_pointer
const & pvArray) OVERRIDE FINAL;
564 ChannelArray::shared_pointer
const & channelArray) OVERRIDE FINAL;
566 ChannelArray::shared_pointer
const & channelArray) OVERRIDE FINAL;
568 ChannelArray::shared_pointer
const & channelArray,
569 std::size_t length) OVERRIDE FINAL;
570 virtual void destroy() OVERRIDE FINAL;
572 ChannelArray::shared_pointer getChannelArray();
573 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelArray(); }
575 epics::pvData::PVArray::shared_pointer getPVArray();
580 ChannelArray::shared_pointer _channelArray;
581 epics::pvData::PVArray::shared_pointer _pvArray;
591class ServerDestroyRequestHandler :
public AbstractServerResponseHandler
594 ServerDestroyRequestHandler(ServerContextImpl::shared_pointer
const & context) :
595 AbstractServerResponseHandler(context,
"Destroy request") {
597 virtual ~ServerDestroyRequestHandler() {}
604 void failureResponse(Transport::shared_pointer
const & transport, pvAccessID ioid,
const epics::pvData::Status& errorStatus);
612class ServerCancelRequestHandler :
public AbstractServerResponseHandler
615 ServerCancelRequestHandler(ServerContextImpl::shared_pointer
const & context) :
616 AbstractServerResponseHandler(context,
"Cancel request") {
618 virtual ~ServerCancelRequestHandler() {}
625 void failureResponse(Transport::shared_pointer
const & transport, pvAccessID ioid,
const epics::pvData::Status& errorStatus);
633class ServerProcessHandler :
public AbstractServerResponseHandler
636 ServerProcessHandler(ServerContextImpl::shared_pointer
const & context) :
637 AbstractServerResponseHandler(context,
"Process request") {
639 virtual ~ServerProcessHandler() {}
646class ServerChannelProcessRequesterImpl :
647 public BaseChannelRequester,
649 public std::tr1::enable_shared_from_this<ServerChannelProcessRequesterImpl>
652 typedef std::tr1::shared_ptr<ServerChannelProcessRequesterImpl> shared_pointer;
653 typedef std::tr1::shared_ptr<const ServerChannelProcessRequesterImpl> const_shared_pointer;
655 ServerChannelProcessRequesterImpl(ServerContextImpl::shared_pointer
const & context,
656 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
657 Transport::shared_pointer
const & transport);
658 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
660 static ChannelProcessRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
661 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
662 Transport::shared_pointer
const & transport, epics::pvData::PVStructure::shared_pointer
const & pvRequest);
663 virtual ~ServerChannelProcessRequesterImpl() {}
665 virtual void channelProcessConnect(
const epics::pvData::Status& status, ChannelProcess::shared_pointer
const & channelProcess) OVERRIDE FINAL;
666 virtual void processDone(
const epics::pvData::Status& status, ChannelProcess::shared_pointer
const & channelProcess) OVERRIDE FINAL;
667 virtual void destroy() OVERRIDE FINAL;
669 ChannelProcess::shared_pointer getChannelProcess();
670 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelProcess(); }
676 ChannelProcess::shared_pointer _channelProcess;
684class ServerGetFieldHandler :
public AbstractServerResponseHandler
687 ServerGetFieldHandler(ServerContextImpl::shared_pointer
const & context) :
688 AbstractServerResponseHandler(context,
"Get field request") {
690 virtual ~ServerGetFieldHandler() {}
696 void getFieldFailureResponse(Transport::shared_pointer
const & transport,
const pvAccessID ioid,
const epics::pvData::Status& errorStatus);
699class ServerGetFieldRequesterImpl :
700 public BaseChannelRequester,
702 public std::tr1::enable_shared_from_this<ServerGetFieldRequesterImpl>
705 typedef std::tr1::shared_ptr<ServerGetFieldRequesterImpl> shared_pointer;
706 typedef std::tr1::shared_ptr<const ServerGetFieldRequesterImpl> const_shared_pointer;
708 ServerGetFieldRequesterImpl(ServerContextImpl::shared_pointer
const & context,
709 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
710 Transport::shared_pointer
const & transport);
712 virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return std::tr1::shared_ptr<ChannelRequest>(); }
714 virtual ~ServerGetFieldRequesterImpl() {}
716 virtual void destroy() OVERRIDE FINAL;
717 virtual
void send(
epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
720 epics::pvData::Status _status;
721 epics::pvData::FieldConstPtr _field;
724class ServerGetFieldHandlerTransportSender : public TransportSender
727 ServerGetFieldHandlerTransportSender(
const pvAccessID ioid,
const epics::pvData::Status& status, Transport::shared_pointer
const & ):
728 _ioid(ioid), _status(status) {
731 virtual ~ServerGetFieldHandlerTransportSender() {}
733 virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL {
735 buffer->putInt(_ioid);
736 _status.serialize(buffer, control);
740 const pvAccessID _ioid;
741 const epics::pvData::Status _status;
750class ServerRPCHandler :
public AbstractServerResponseHandler
753 ServerRPCHandler(ServerContextImpl::shared_pointer
const & context) :
754 AbstractServerResponseHandler(context,
"RPC request") {
756 virtual ~ServerRPCHandler() {}
763class ServerChannelRPCRequesterImpl :
764 public BaseChannelRequester,
766 public std::tr1::enable_shared_from_this<ServerChannelRPCRequesterImpl>
769 typedef std::tr1::shared_ptr<ServerChannelRPCRequesterImpl> shared_pointer;
770 typedef std::tr1::shared_ptr<const ServerChannelRPCRequesterImpl> const_shared_pointer;
772 ServerChannelRPCRequesterImpl(ServerContextImpl::shared_pointer
const & context,
773 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
774 Transport::shared_pointer
const & transport);
775 void activate(epics::pvData::PVStructure::shared_pointer
const & pvRequest);
777 static ChannelRPCRequester::shared_pointer create(ServerContextImpl::shared_pointer
const & context,
778 std::tr1::shared_ptr<ServerChannel>
const & channel,
const pvAccessID ioid,
779 Transport::shared_pointer
const & transport,epics::pvData::PVStructure::shared_pointer
const & pvRequest);
780 virtual ~ServerChannelRPCRequesterImpl() {}
782 virtual void channelRPCConnect(
const epics::pvData::Status& status, ChannelRPC::shared_pointer
const & channelRPC) OVERRIDE FINAL;
784 ChannelRPC::shared_pointer
const & channelRPC,
785 epics::pvData::PVStructure::shared_pointer
const & pvResponse) OVERRIDE FINAL;
786 virtual void destroy() OVERRIDE FINAL;
790 ChannelRPC::shared_pointer getChannelRPC();
791 virtual
std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL {
return getChannelRPC(); }
796 ChannelRPC::shared_pointer _channelRPC;
797 epics::pvData::PVStructure::shared_pointer _pvResponse;
805class ServerResponseHandler :
public ResponseHandler {
807 ServerResponseHandler(ServerContextImpl::shared_pointer
const & context);
809 virtual ~ServerResponseHandler() {}
821 AuthNZHandler handle_authnz;
basic_string< char > string
constexpr const _Tp && get(const pair< _Tp, _Up > &&__p) noexcept
constexpr void resize(size_type __new_size)
constexpr size_type size() const noexcept
The Requester for a ChannelArray.
Requester for channelGet.
Requester for channelProcess.
Requester for ChannelPutGet.
Requester for ChannelPut.
Notifications associated with Channel::createChannelRPC().
Completion notification for Channel::getField().
Callback implemented by monitor clients.
Interface defining response handler.
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.
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.
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.
Connection validation message handler.
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.
Create channel request handler.
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.
Destroy channel request handler.
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.
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.
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.
Get field request handler.
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.
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.
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.
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.
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.
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.
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.
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.
Search channel request handler.
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.
Interface defining transport sender (instance sending data over transport).
void getArray(T *values, std::size_t count)
virtual void callback()=0
virtual void timerStopped()=0
std::tr1::shared_ptr< const Structure > StructureConstPtr
std::tr1::shared_ptr< const Field > FieldConstPtr
Copyright - See the COPYRIGHT that is included with this distribution.