xrootd
Public Types | Public Member Functions | List of all members
XrdCl::IncomingMsgHandler Class Referenceabstract

Message handler. More...

#include <XrdClPostMasterInterfaces.hh>

Public Types

enum  Action {
  Take = 0x0001, Ignore = 0x0002, RemoveHandler = 0x0004, Raw = 0x0008,
  NoProcess = 0x0010
}
 Actions to be taken after a message is processed by the handler. More...
 
enum  StreamEvent { Ready = 1, Broken = 2, Timeout = 3, FatalError = 4 }
 Events that may have occurred to the stream. More...
 

Public Member Functions

virtual ~IncomingMsgHandler ()
 Event types that the message handler may receive. More...
 
virtual uint16_t Examine (Message *msg)=0
 
virtual uint16_t GetSid () const =0
 
virtual void Process (Message *msg)
 
virtual Status ReadMessageBody (Message *msg, int socket, uint32_t &bytesRead)
 
virtual uint8_t OnStreamEvent (StreamEvent event, uint16_t streamNum, Status status)
 

Detailed Description

Message handler.

Member Enumeration Documentation

Actions to be taken after a message is processed by the handler.

Enumerator
Take 

Take ownership over the message.

Ignore 

Ignore the message.

RemoveHandler 

Remove the handler from the notification list

Raw 

the handler is interested in reading the message body directly from the socket

NoProcess 

don't call the processing callback even if the message belongs to this handler

Events that may have occurred to the stream.

Enumerator
Ready 

The stream has become connected.

Broken 

The stream is broken.

Timeout 

The declared timeout has occurred.

FatalError 

Stream has been broken and won't be recovered.

Constructor & Destructor Documentation

virtual XrdCl::IncomingMsgHandler::~IncomingMsgHandler ( )
inlinevirtual

Event types that the message handler may receive.

Member Function Documentation

virtual uint16_t XrdCl::IncomingMsgHandler::Examine ( Message msg)
pure virtual

Examine an incoming message, and decide on the action to be taken

Parameters
msgthe message, may be zero if receive failed
Returns
action type that needs to be take wrt the message and the handler
virtual uint16_t XrdCl::IncomingMsgHandler::GetSid ( ) const
pure virtual

Get handler sid

return sid of the corresponding request, otherwise 0

virtual uint8_t XrdCl::IncomingMsgHandler::OnStreamEvent ( StreamEvent  event,
uint16_t  streamNum,
Status  status 
)
inlinevirtual

Handle an event other that a message arrival

Parameters
eventtype of the event
streamNumstream concerned
statusstatus info
Returns
Action::RemoveHandler or 0
virtual void XrdCl::IncomingMsgHandler::Process ( Message msg)
inlinevirtual

Process the message if it was "taken" by the examine action

Parameters
msgthe message to be processed
virtual Status XrdCl::IncomingMsgHandler::ReadMessageBody ( Message msg,
int  socket,
uint32_t &  bytesRead 
)
inlinevirtual

Read message body directly from a socket - called if Examine returns Raw flag - only socket related errors may be returned here

Parameters
msgthe corresponding message header
socketthe socket to read from
bytesReadnumber of bytes read by the method
Returns
stOK & suDone if the whole body has been processed stOK & suRetry if more data is needed stError on failure

References XrdCl::stOK, and XrdCl::suDone.


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