7#ifndef BASECHANNELREQUESTER_H_
8#define BASECHANNELREQUESTER_H_
10#include <pv/requester.h>
11#include <pv/destroyable.h>
12#include <pv/serverContextImpl.h>
13#include <pv/serverChannelImpl.h>
21class BaseChannelRequester :
22 virtual public epics::pvData::Requester,
28 POINTER_DEFINITIONS(BaseChannelRequester);
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() {};
37 virtual std::tr1::shared_ptr<ChannelRequest> getOperation() =0;
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);
43 virtual
void stats(Stats &s) const OVERRIDE FINAL;
45 static const epics::pvData::Status okStatus;
46 static const epics::pvData::Status badCIDStatus;
47 static const epics::pvData::Status badIOIDStatus;
48 static const epics::pvData::Status noReadACLStatus;
49 static const epics::pvData::Status noWriteACLStatus;
50 static const epics::pvData::Status noProcessACLStatus;
51 static const epics::pvData::Status otherRequestPendingStatus;
52 static const epics::pvData::Status notAChannelRequestStatus;
54 const pvAccessID _ioid;
55 const Transport::shared_pointer _transport;
56 const std::tr1::shared_ptr<ServerChannel> _channel;
57 epics::pvData::Mutex _mutex;
59 ServerContextImpl::shared_pointer _context;
60 static const epics::pvData::int32 NULL_REQUEST;
61 epics::pvData::int32 _pendingRequest;
64class BaseChannelRequesterMessageTransportSender : public TransportSender
67 BaseChannelRequesterMessageTransportSender(
const pvAccessID _ioid,
const std::string message,
const epics::pvData::MessageType messageType);
68 virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
70 const pvAccessID _ioid;
72 const epics::pvData::MessageType _messageType;
75class BaseChannelRequesterFailureMessageTransportSender :
public TransportSender
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;
83 const pvAccessID _ioid;
85 const epics::pvData::Status _status;
86 Transport::shared_pointer _transport;
basic_string< char > string
Base interface for all channel requests (aka.
Instance declaring destroy method.
virtual std::string getRequesterName()=0
The requester must have a name.
Interface defining transport sender (instance sending data over transport).
virtual void send(epics::pvData::ByteBuffer *buffer, TransportSendControl *control)=0
Called by transport.
Copyright - See the COPYRIGHT that is included with this distribution.
Expose statistics related to network transport.