xrootd
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
XrdCl::InQueue Class Reference

A synchronize queue for incoming data. More...

#include <XrdClInQueue.hh>

Collaboration diagram for XrdCl::InQueue:
Collaboration graph
[legend]

Public Member Functions

bool AddMessage (Message *msg)
 Add a fully reconstructed message to the queue. More...
 
void AddMessageHandler (IncomingMsgHandler *handler, time_t expires)
 
IncomingMsgHandlerGetHandlerForMessage (Message *msg, time_t &expires, uint16_t &action)
 
void ReAddMessageHandler (IncomingMsgHandler *handler, time_t expires)
 Re-insert the handler without scanning the cached messages. More...
 
void RemoveMessageHandler (IncomingMsgHandler *handler)
 Remove a listener. More...
 
void ReportStreamEvent (IncomingMsgHandler::StreamEvent event, XRootDStatus status)
 Report an event to the handlers. More...
 
void ReportTimeout (time_t now=0)
 Timeout handlers. More...
 

Private Types

typedef std::pair< IncomingMsgHandler *, time_t > HandlerAndExpire
 
typedef std::map< uint16_t, HandlerAndExpireHandlerMap
 
typedef std::map< uint16_t, Message * > MessageMap
 

Private Member Functions

bool DiscardMessage (Message *msg, uint16_t &sid) const
 

Private Attributes

MessageMap pMessages
 
HandlerMap pHandlers
 
XrdSysRecMutex pMutex
 

Detailed Description

A synchronize queue for incoming data.

Member Typedef Documentation

◆ HandlerAndExpire

typedef std::pair<IncomingMsgHandler *, time_t> XrdCl::InQueue::HandlerAndExpire
private

◆ HandlerMap

typedef std::map<uint16_t, HandlerAndExpire> XrdCl::InQueue::HandlerMap
private

◆ MessageMap

typedef std::map<uint16_t, Message*> XrdCl::InQueue::MessageMap
private

Member Function Documentation

◆ AddMessage()

bool XrdCl::InQueue::AddMessage ( Message msg)

Add a fully reconstructed message to the queue.

Referenced by XrdCl::Stream::QueueIncMsgJob::Run().

◆ AddMessageHandler()

void XrdCl::InQueue::AddMessageHandler ( IncomingMsgHandler handler,
time_t  expires 
)

Add a listener that should be notified about incoming messages

Parameters
handlermessage handler
expirestime when the message handler expires

◆ DiscardMessage()

bool XrdCl::InQueue::DiscardMessage ( Message msg,
uint16_t &  sid 
) const
private

Discard messages that don't meet basic criteria and extract the message sid

Parameters
msgmessage object
sidextracted message sid used later for matching with the handler
Returns
true if message discarded, otherwise false

◆ GetHandlerForMessage()

IncomingMsgHandler* XrdCl::InQueue::GetHandlerForMessage ( Message msg,
time_t &  expires,
uint16_t &  action 
)

Get a message handler interested in receiving message whose header is stored in msg

Parameters
msgmessage header
expireshandle's expiration timestamp
actionthe action declared by the handler
Returns
handler or 0 if none is interested

◆ ReAddMessageHandler()

void XrdCl::InQueue::ReAddMessageHandler ( IncomingMsgHandler handler,
time_t  expires 
)

Re-insert the handler without scanning the cached messages.

◆ RemoveMessageHandler()

void XrdCl::InQueue::RemoveMessageHandler ( IncomingMsgHandler handler)

Remove a listener.

◆ ReportStreamEvent()

void XrdCl::InQueue::ReportStreamEvent ( IncomingMsgHandler::StreamEvent  event,
XRootDStatus  status 
)

Report an event to the handlers.

◆ ReportTimeout()

void XrdCl::InQueue::ReportTimeout ( time_t  now = 0)

Timeout handlers.

Member Data Documentation

◆ pHandlers

HandlerMap XrdCl::InQueue::pHandlers
private

◆ pMessages

MessageMap XrdCl::InQueue::pMessages
private

◆ pMutex

XrdSysRecMutex XrdCl::InQueue::pMutex
private

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