xrootd
Public Member Functions | Private Types | 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, uint16_t streamNum, Status 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::list
< HandlerAndExpire
HandlerList
 

Private Attributes

std::list< Message * > pMessages
 
HandlerList pHandlers
 
XrdSysMutex pMutex
 

Detailed Description

A synchronize queue for incoming data.

Member Typedef Documentation

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

Member Function Documentation

bool XrdCl::InQueue::AddMessage ( Message msg)
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

References XrdCl::IncomingMsgHandler::Examine(), XrdCl::IncomingMsgHandler::NoProcess, pHandlers, pMessages, pMutex, XrdCl::IncomingMsgHandler::Process(), XrdCl::IncomingMsgHandler::RemoveHandler, and XrdCl::IncomingMsgHandler::Take.

Referenced by XrdCl::Channel::Receive().

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

References XrdCl::IncomingMsgHandler::Examine(), pHandlers, pMutex, and XrdCl::IncomingMsgHandler::Take.

Referenced by XrdCl::Stream::InstallIncHandler().

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

Re-insert the handler without scanning the cached messages.

References pHandlers, and pMutex.

Referenced by XrdCl::Stream::OnError(), and XrdCl::Stream::OnIncoming().

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

Remove a listener.

References pHandlers, and pMutex.

void XrdCl::InQueue::ReportStreamEvent ( IncomingMsgHandler::StreamEvent  event,
uint16_t  streamNum,
Status  status 
)

Report an event to the handlers.

References pHandlers, pMutex, and XrdCl::IncomingMsgHandler::RemoveHandler.

Referenced by XrdCl::Stream::OnError(), and XrdCl::Stream::OnFatalError().

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

Member Data Documentation

HandlerList XrdCl::InQueue::pHandlers
private
std::list<Message *> XrdCl::InQueue::pMessages
private

Referenced by AddMessage(), and AddMessageHandler().

XrdSysMutex XrdCl::InQueue::pMutex
private

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