This is Unofficial EPICS BASE Doxygen Site
baseChannelRequester.h
Go to the documentation of this file.
1 
7 #ifndef BASECHANNELREQUESTER_H_
8 #define BASECHANNELREQUESTER_H_
9 
10 #include <pv/requester.h>
11 #include <pv/destroyable.h>
12 #include <pv/serverContextImpl.h>
13 #include <pv/serverChannelImpl.h>
14 
15 namespace epics {
16 namespace pvAccess {
17 
18 class ServerChannel;
19 class ChannelRequest;
20 
22  virtual public epics::pvData::Requester,
23  public TransportSender,
24  public NetStats,
25  public Destroyable
26 {
27 public:
29  BaseChannelRequester(ServerContextImpl::shared_pointer const & context, std::tr1::shared_ptr<ServerChannel> const & channel,
30  const pvAccessID ioid, Transport::shared_pointer const & transport);
31  virtual ~BaseChannelRequester() {};
32 
34  void stopRequest();
37  virtual std::tr1::shared_ptr<ChannelRequest> getOperation() =0;
38  virtual std::string getRequesterName() OVERRIDE FINAL;
39  virtual void message(std::string const & message, epics::pvData::MessageType messageType) OVERRIDE FINAL;
40  static void message(Transport::shared_pointer const & transport, const pvAccessID ioid, const std::string message, const epics::pvData::MessageType messageType);
41  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);
42 
43  virtual void stats(Stats &s) const OVERRIDE FINAL;
44 
53 protected:
55  const Transport::shared_pointer _transport;
56  const std::tr1::shared_ptr<ServerChannel> _channel;
58 private:
60  static const epics::pvData::int32 NULL_REQUEST;
61  epics::pvData::int32 _pendingRequest;
62 };
63 
65 {
66 public:
68  virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
69 private:
70  const pvAccessID _ioid;
71  const std::string _message;
72  const epics::pvData::MessageType _messageType;
73 };
74 
76 {
77 public:
78  BaseChannelRequesterFailureMessageTransportSender(const epics::pvData::int8 command, Transport::shared_pointer const & transport, const pvAccessID ioid, const epics::pvData::int8 qos, const epics::pvData::Status& status);
79  virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
80 
81 private:
82  const epics::pvData::int8 _command;
83  const pvAccessID _ioid;
84  const epics::pvData::int8 _qos;
85  const epics::pvData::Status _status;
86  Transport::shared_pointer _transport;
87 };
88 
89 }
90 }
91 
92 
93 #endif /* BASECHANNELREQUESTER_H_ */
int8_t int8
Definition: pvType.h:75
BaseChannelRequester(ServerContextImpl::shared_pointer const &context, std::tr1::shared_ptr< ServerChannel > const &channel, const pvAccessID ioid, Transport::shared_pointer const &transport)
epicsInt32 pvAccessID
Definition: pvaDefs.h:18
const std::tr1::shared_ptr< ServerChannel > _channel
pvd::Status status
static const epics::pvData::Status noReadACLStatus
bool startRequest(epics::pvData::int32 qos)
static const epics::pvData::Status otherRequestPendingStatus
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
virtual void stats(Stats &s) const OVERRIDE FINAL
Query current counter values.
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control)=0
#define OVERRIDE
Definition: pvAccess.h:55
const Transport::shared_pointer _transport
POINTER_DEFINITIONS(BaseChannelRequester)
static const epics::pvData::Status badIOIDStatus
static const epics::pvData::Status noProcessACLStatus
static const epics::pvData::Status badCIDStatus
static const epics::pvData::Status noWriteACLStatus
This class implements a Bytebuffer that is like the java.nio.ByteBuffer.
Definition: byteBuffer.h:233
virtual std::string getRequesterName() OVERRIDE FINAL
Expose statistics related to network transport.
Definition: pvAccess.h:156
virtual void message(std::string const &message, epics::pvData::MessageType messageType) OVERRIDE FINAL
static const epics::pvData::Status okStatus
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)
Instance declaring destroy method.
Definition: destroyable.h:24
epicsMutex Mutex
Definition: lock.h:28
int32_t int32
Definition: pvType.h:83
virtual std::tr1::shared_ptr< ChannelRequest > getOperation()=0
The Operation associated with this Requester, except for GetField and Monitor (which are special snow...
std::tr1::shared_ptr< ServerContextImpl > shared_pointer
#define FINAL
Definition: pvAccess.h:48
static const epics::pvData::Status notAChannelRequestStatus