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

#include "responseHandlers.h"

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

Public Member Functions

 ServerResponseHandler (ServerContextImpl::shared_pointer const &context)
 
virtual ~ServerResponseHandler ()
 
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::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::ResponseHandler
std::string _description
 
epics::pvData::int32 _debugLevel
 

Detailed Description

PVAS request handler - main handler which dispatches requests to appropriate handlers.

Definition at line 801 of file responseHandlers.h.

Constructor & Destructor Documentation

epics::pvAccess::ServerResponseHandler::ServerResponseHandler ( ServerContextImpl::shared_pointer const &  context)

Definition at line 104 of file responseHandlers.cpp.

105  :ResponseHandler(context.get(), "ServerResponseHandler")
106  ,handle_bad(context)
107  ,handle_beacon(context, "Beacon")
108  ,handle_validation(context)
109  ,handle_echo(context)
110  ,handle_search(context)
111  ,handle_authnz(context.get())
112  ,handle_create(context)
113  ,handle_destroy(context)
114  ,handle_get(context)
115  ,handle_put(context)
116  ,handle_putget(context)
117  ,handle_monitor(context)
118  ,handle_array(context)
119  ,handle_close(context)
120  ,handle_process(context)
121  ,handle_getfield(context)
122  ,handle_rpc(context)
123  ,handle_cancel(context)
124  ,m_handlerTable(CMD_CANCEL_REQUEST+1, &handle_bad)
125 {
126 
127  m_handlerTable[CMD_BEACON] = &handle_beacon; /* 0 */
128  m_handlerTable[CMD_CONNECTION_VALIDATION] = &handle_validation; /* 1 */
129  m_handlerTable[CMD_ECHO] = &handle_echo; /* 2 */
130  m_handlerTable[CMD_SEARCH] = &handle_search; /* 3 */
131  m_handlerTable[CMD_SEARCH_RESPONSE] = &handle_bad;
132  m_handlerTable[CMD_AUTHNZ] = &handle_authnz; /* 5 */
133  m_handlerTable[CMD_ACL_CHANGE] = &handle_bad; /* 6 - access right change */
134  m_handlerTable[CMD_CREATE_CHANNEL] = &handle_create; /* 7 */
135  m_handlerTable[CMD_DESTROY_CHANNEL] = &handle_destroy; /* 8 */
136  m_handlerTable[CMD_CONNECTION_VALIDATED] = &handle_bad; /* 9 */
137 
138  m_handlerTable[CMD_GET] = &handle_get; /* 10 - get response */
139  m_handlerTable[CMD_PUT] = &handle_put; /* 11 - put response */
140  m_handlerTable[CMD_PUT_GET] = &handle_putget; /* 12 - put-get response */
141  m_handlerTable[CMD_MONITOR] = &handle_monitor; /* 13 - monitor response */
142  m_handlerTable[CMD_ARRAY] = &handle_array; /* 14 - array response */
143  m_handlerTable[CMD_DESTROY_REQUEST] = &handle_close; /* 15 - destroy request */
144  m_handlerTable[CMD_PROCESS] = &handle_process; /* 16 - process response */
145  m_handlerTable[CMD_GET_FIELD] = &handle_getfield; /* 17 - get field response */
146  m_handlerTable[CMD_MESSAGE] = &handle_bad; /* 18 - message to Requester */
147  m_handlerTable[CMD_MULTIPLE_DATA] = &handle_bad; /* 19 - grouped monitors */
148 
149  m_handlerTable[CMD_RPC] = &handle_rpc; /* 20 - RPC response */
150  m_handlerTable[CMD_CANCEL_REQUEST] = &handle_cancel; /* 21 - cancel request */
151 }
ResponseHandler(Context *context, const std::string &description)
virtual epics::pvAccess::ServerResponseHandler::~ServerResponseHandler ( )
inlinevirtual

Definition at line 805 of file responseHandlers.h.

805 {}

Member Function Documentation

void epics::pvAccess::ServerResponseHandler::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 153 of file responseHandlers.cpp.

156 {
157  if(command<0||command>=(int8)m_handlerTable.size())
158  {
160  "Invalid (or unsupported) command: %x.", (0xFF&command));
161 
163  std::cerr<<"Invalid (or unsupported) command: "<<std::hex<<(int)(0xFF&command)<<"\n"
164  <<HexDump(*payloadBuffer, payloadSize).limit(256u);
165  }
166  return;
167  }
168 
169  // delegate
170  m_handlerTable[command]->handleResponse(responseFrom, transport,
171  version, command, payloadSize, payloadBuffer);
172 }
int8_t int8
Definition: pvType.h:75
#define LOG(level, format,...)
Definition: logger.h:48
HexDump & limit(size_t n=(size_t)-1)
safety limit on max bytes printed
Definition: hexDump.h:44
Definition: tool_lib.h:64
#define IS_LOGGABLE(level)
Definition: logger.h:51

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