This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::ServerCancelRequestHandler Class Reference

#include "responseHandlers.h"

+ Inheritance diagram for epics::pvAccess::ServerCancelRequestHandler:
+ Collaboration diagram for epics::pvAccess::ServerCancelRequestHandler:

Public Member Functions

 ServerCancelRequestHandler (ServerContextImpl::shared_pointer const &context)
 
virtual ~ServerCancelRequestHandler ()
 
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) OVERRIDE FINAL
 
- Public Member Functions inherited from epics::pvAccess::AbstractServerResponseHandler
 AbstractServerResponseHandler (ServerContextImpl::shared_pointer const &context, std::string description)
 
virtual ~AbstractServerResponseHandler ()
 
- Public Member Functions inherited from epics::pvAccess::ResponseHandler
 POINTER_DEFINITIONS (ResponseHandler)
 
 ResponseHandler (Context *context, const std::string &description)
 
virtual ~ResponseHandler ()
 

Additional Inherited Members

- Static Public Attributes inherited from epics::pvAccess::ResponseHandler
static size_t num_instances
 
- Protected Attributes inherited from epics::pvAccess::AbstractServerResponseHandler
ServerContextImpl::shared_pointer _context
 
- Protected Attributes inherited from epics::pvAccess::ResponseHandler
std::string _description
 
epics::pvData::int32 _debugLevel
 

Detailed Description

Cancel request handler.

Definition at line 608 of file responseHandlers.h.

Constructor & Destructor Documentation

epics::pvAccess::ServerCancelRequestHandler::ServerCancelRequestHandler ( ServerContextImpl::shared_pointer const &  context)
inline

Definition at line 611 of file responseHandlers.h.

611  :
612  AbstractServerResponseHandler(context, "Cancel request") {
613  }
AbstractServerResponseHandler(ServerContextImpl::shared_pointer const &context, std::string description)
virtual epics::pvAccess::ServerCancelRequestHandler::~ServerCancelRequestHandler ( )
inlinevirtual

Definition at line 614 of file responseHandlers.h.

614 {}

Member Function Documentation

void epics::pvAccess::ServerCancelRequestHandler::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

Handle response.

Parameters
[in]responseFromremote address of the responder, 0 if unknown.
[in]transportresponse source transport.
[in]versionmessage version.
[in]payloadSizesize of this message data available in the payloadBuffer.
[in]payloadBuffermessage payload data. Note that this might not be the only message in the buffer. Code must not manipulate buffer.

Reimplemented from epics::pvAccess::ResponseHandler.

Definition at line 2435 of file responseHandlers.cpp.

2437  {
2439  transport, version, command, payloadSize, payloadBuffer);
2440 
2441  // NOTE: we do not explicitly check if transport is OK
2442  detail::BlockingServerTCPTransportCodec* casTransport(static_cast<detail::BlockingServerTCPTransportCodec*>(transport.get()));
2443 
2444  transport->ensureData(2*sizeof(int32)/sizeof(int8));
2445  const pvAccessID sid = payloadBuffer->getInt();
2446  const pvAccessID ioid = payloadBuffer->getInt();
2447 
2448  ServerChannel::shared_pointer channel = casTransport->getChannel(sid);
2449  if (!channel)
2450  {
2451  failureResponse(transport, ioid, BaseChannelRequester::badCIDStatus);
2452  return;
2453  }
2454 
2455  BaseChannelRequester::shared_pointer request(channel->getRequest(ioid));
2456  if (!request)
2457  {
2458  failureResponse(transport, ioid, BaseChannelRequester::badIOIDStatus);
2459  return;
2460  }
2461  //atomic::add(request->bytesRX, payloadSize);
2462 
2463  ChannelRequest::shared_pointer cr = dynamic_pointer_cast<ChannelRequest>(request->getOperation());
2464  if (!cr)
2465  {
2466  failureResponse(transport, ioid, BaseChannelRequester::notAChannelRequestStatus);
2467  return;
2468  }
2469 
2470  cr->cancel();
2471 }
int8_t int8
Definition: pvType.h:75
std::string request
epicsInt32 pvAccessID
Definition: pvaDefs.h:18
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)
static const epics::pvData::Status badIOIDStatus
EPICS_ALWAYS_INLINE int32 getInt()
Definition: byteBuffer.h:629
static const epics::pvData::Status badCIDStatus
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
Definition: shared_ptr.hpp:808
int32_t int32
Definition: pvType.h:83
static const epics::pvData::Status notAChannelRequestStatus

The documentation for this class was generated from the following files: