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

#include "responseHandlers.h"

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

Public Types

typedef std::tr1::shared_ptr< ServerGetFieldRequesterImplshared_pointer
 
typedef std::tr1::shared_ptr< const ServerGetFieldRequesterImplconst_shared_pointer
 

Public Member Functions

 ServerGetFieldRequesterImpl (ServerContextImpl::shared_pointer const &context, std::tr1::shared_ptr< ServerChannel > const &channel, const pvAccessID ioid, Transport::shared_pointer const &transport)
 
virtual std::tr1::shared_ptr< ChannelRequestgetOperation () OVERRIDE FINAL
 The Operation associated with this Requester, except for GetField and Monitor (which are special snowflakes...) More...
 
virtual ~ServerGetFieldRequesterImpl ()
 
virtual void getDone (const epics::pvData::Status &status, epics::pvData::FieldConstPtr const &field) OVERRIDE FINAL
 
virtual void destroy () OVERRIDE FINAL
 
virtual void send (epics::pvData::ByteBuffer *buffer, TransportSendControl *control) OVERRIDE FINAL
 
- Public Member Functions inherited from epics::pvAccess::BaseChannelRequester
 POINTER_DEFINITIONS (BaseChannelRequester)
 
 BaseChannelRequester (ServerContextImpl::shared_pointer const &context, std::tr1::shared_ptr< ServerChannel > const &channel, const pvAccessID ioid, Transport::shared_pointer const &transport)
 
virtual ~BaseChannelRequester ()
 
bool startRequest (epics::pvData::int32 qos)
 
void stopRequest ()
 
epics::pvData::int32 getPendingRequest ()
 
virtual std::string getRequesterName () OVERRIDE FINAL
 
virtual void message (std::string const &message, epics::pvData::MessageType messageType) OVERRIDE FINAL
 
virtual void stats (Stats &s) const OVERRIDE FINAL
 Query current counter values. More...
 
- Public Member Functions inherited from epics::pvAccess::TransportSender
 POINTER_DEFINITIONS (TransportSender)
 
 TransportSender ()
 
virtual ~TransportSender ()
 
- Public Member Functions inherited from epics::pvAccess::Lockable
 POINTER_DEFINITIONS (Lockable)
 
virtual ~Lockable ()
 
virtual void lock ()
 
virtual void unlock ()
 
- Public Member Functions inherited from epics::pvAccess::fair_queue< T >::entry
 entry ()
 
 ~entry ()
 
- Public Member Functions inherited from epics::pvAccess::NetStats
virtual ~NetStats ()
 
- Public Member Functions inherited from epics::pvAccess::Destroyable
 POINTER_DEFINITIONS (Destroyable)
 
- Public Member Functions inherited from epics::pvAccess::GetFieldRequester
 POINTER_DEFINITIONS (GetFieldRequester)
 
virtual ~GetFieldRequester ()
 
- Public Member Functions inherited from epics::pvAccess::ChannelBaseRequester
 POINTER_DEFINITIONS (ChannelBaseRequester)
 
 ChannelBaseRequester ()
 
virtual ~ChannelBaseRequester ()
 
virtual void channelDisconnect (bool destroy)
 

Additional Inherited Members

- Static Public Member Functions inherited from epics::pvAccess::BaseChannelRequester
static void message (Transport::shared_pointer const &transport, const pvAccessID ioid, const std::string message, const epics::pvData::MessageType messageType)
 
static void sendFailureMessage (const epics::pvData::int8 command, Transport::shared_pointer const &transport, const pvAccessID ioid, const epics::pvData::int8 qos, const epics::pvData::Status status)
 
- Public Attributes inherited from epics::pvAccess::TransportSender
size_t bytesTX
 
size_t bytesRX
 
- Static Public Attributes inherited from epics::pvAccess::BaseChannelRequester
static const epics::pvData::Status okStatus = Status()
 
static const epics::pvData::Status badCIDStatus
 
static const epics::pvData::Status badIOIDStatus
 
static const epics::pvData::Status noReadACLStatus
 
static const epics::pvData::Status noWriteACLStatus
 
static const epics::pvData::Status noProcessACLStatus
 
static const epics::pvData::Status otherRequestPendingStatus
 
static const epics::pvData::Status notAChannelRequestStatus
 
- Static Public Attributes inherited from epics::pvAccess::ChannelBaseRequester
static size_t num_instances
 
- Protected Member Functions inherited from epics::pvAccess::Destroyable
virtual ~Destroyable ()
 
- Protected Attributes inherited from epics::pvAccess::BaseChannelRequester
const pvAccessID _ioid
 
const Transport::shared_pointer _transport
 
const std::tr1::shared_ptr< ServerChannel_channel
 
epics::pvData::Mutex _mutex
 

Detailed Description

Definition at line 695 of file responseHandlers.h.

Member Typedef Documentation

Constructor & Destructor Documentation

epics::pvAccess::ServerGetFieldRequesterImpl::ServerGetFieldRequesterImpl ( ServerContextImpl::shared_pointer const &  context,
std::tr1::shared_ptr< ServerChannel > const &  channel,
const pvAccessID  ioid,
Transport::shared_pointer const &  transport 
)

Definition at line 2679 of file responseHandlers.cpp.

2681  :
2682  BaseChannelRequester(context, channel, ioid, transport), done(false)
2683 {
2684 }
BaseChannelRequester(ServerContextImpl::shared_pointer const &context, std::tr1::shared_ptr< ServerChannel > const &channel, const pvAccessID ioid, Transport::shared_pointer const &transport)
virtual epics::pvAccess::ServerGetFieldRequesterImpl::~ServerGetFieldRequesterImpl ( )
inlinevirtual

Definition at line 710 of file responseHandlers.h.

710 {}

Member Function Documentation

void epics::pvAccess::ServerGetFieldRequesterImpl::destroy ( )
virtual

Destroy this instance.

Implements epics::pvAccess::Destroyable.

Definition at line 2703 of file responseHandlers.cpp.

2704 {
2705 }
void epics::pvAccess::ServerGetFieldRequesterImpl::getDone ( const epics::pvData::Status status,
epics::pvData::FieldConstPtr const &  field 
)
virtual

Check status.isOk() to determine success. On success the 'field' will be non-NULL. On failure 'field' will be NULL.

Parameters
statusCompletion status.
fieldThe Structure for the request.

Implements epics::pvAccess::GetFieldRequester.

Definition at line 2686 of file responseHandlers.cpp.

2687 {
2688  bool twice;
2689  {
2690  Lock guard(_mutex);
2691  _status = status;
2692  _field = field;
2693  twice = done;
2694  done = true;
2695  }
2696  if(!twice) {
2697  TransportSender::shared_pointer thisSender = shared_from_this();
2698  _transport->enqueueSendRequest(thisSender);
2699  }
2700  _channel->completeGetField(this);
2701 }
const std::tr1::shared_ptr< ServerChannel > _channel
pvd::Status status
A lock for multithreading.
Definition: lock.h:36
const Transport::shared_pointer _transport
virtual std::tr1::shared_ptr<ChannelRequest> epics::pvAccess::ServerGetFieldRequesterImpl::getOperation ( )
inlinevirtual

The Operation associated with this Requester, except for GetField and Monitor (which are special snowflakes...)

Implements epics::pvAccess::BaseChannelRequester.

Definition at line 708 of file responseHandlers.h.

708 { return std::tr1::shared_ptr<ChannelRequest>(); }
void epics::pvAccess::ServerGetFieldRequesterImpl::send ( epics::pvData::ByteBuffer buffer,
TransportSendControl control 
)
virtual

Called by transport. By this call transport gives callee ownership over the buffer. Calls on TransportSendControl instance must be made from calling thread. Moreover, ownership is valid only for the time of call of this method. NOTE: these limitations allow efficient implementation.

Implements epics::pvAccess::TransportSender.

Definition at line 2707 of file responseHandlers.cpp.

2708 {
2709  control->startMessage((int8)CMD_GET_FIELD, sizeof(int32)/sizeof(int8));
2710  buffer->putInt(_ioid);
2711  {
2712  Lock guard(_mutex);
2713  _status.serialize(buffer, control);
2714  if (_status.isSuccess())
2715  control->cachedSerialize(_field, buffer);
2716  }
2717 }
int8_t int8
Definition: pvType.h:75
EPICS_ALWAYS_INLINE void putInt(int32 value)
Definition: byteBuffer.h:537
A lock for multithreading.
Definition: lock.h:36
void serialize(ByteBuffer *buffer, SerializableControl *flusher) const
Definition: status.cpp:45
bool isSuccess() const
Definition: status.h:103
virtual void cachedSerialize(std::tr1::shared_ptr< const Field > const &field, ByteBuffer *buffer)=0
virtual void startMessage(epics::pvData::int8 command, std::size_t ensureCapacity, epics::pvData::int32 payloadSize=0)=0
int32_t int32
Definition: pvType.h:83

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