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

A hub for dispatching and receiving messages. More...

#include <XrdClPostMaster.hh>

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

Public Member Functions

 PostMaster ()
 Constructor. More...
 
virtual ~PostMaster ()
 Destructor. More...
 
bool Initialize ()
 Initializer. More...
 
bool Finalize ()
 Finalizer. More...
 
bool Start ()
 Start the post master. More...
 
bool Stop ()
 Stop the postmaster. More...
 
bool Reinitialize ()
 Reinitialize after fork. More...
 
Status Send (const URL &url, Message *msg, bool stateful, time_t expires)
 
Status Send (const URL &url, Message *msg, OutgoingMsgHandler *handler, bool stateful, time_t expires)
 
Status Receive (const URL &url, Message *&msg, MessageFilter *filter, time_t expires)
 
Status Receive (const URL &url, IncomingMsgHandler *handler, time_t expires)
 
Status QueryTransport (const URL &url, uint16_t query, AnyObject &result)
 
Status RegisterEventHandler (const URL &url, ChannelEventHandler *handler)
 Register channel event handler. More...
 
Status RemoveEventHandler (const URL &url, ChannelEventHandler *handler)
 Remove a channel event handler. More...
 
TaskManager * GetTaskManager ()
 Get the task manager object user by the post master. More...
 
JobManager * GetJobManager ()
 Get the job manager object user by the post master. More...
 

Private Types

typedef std::map< std::string, Channel * > ChannelMap
 

Private Member Functions

Channel * GetChannel (const URL &url)
 

Private Attributes

Poller * pPoller
 
TaskManager * pTaskManager
 
ChannelMap pChannelMap
 
XrdSysMutex pChannelMapMutex
 
bool pInitialized
 
JobManager * pJobManager
 

Detailed Description

A hub for dispatching and receiving messages.

Member Typedef Documentation

◆ ChannelMap

typedef std::map<std::string, Channel*> XrdCl::PostMaster::ChannelMap
private

Constructor & Destructor Documentation

◆ PostMaster()

XrdCl::PostMaster::PostMaster ( )

Constructor.

◆ ~PostMaster()

virtual XrdCl::PostMaster::~PostMaster ( )
virtual

Destructor.

Member Function Documentation

◆ Finalize()

bool XrdCl::PostMaster::Finalize ( )

Finalizer.

◆ GetChannel()

Channel* XrdCl::PostMaster::GetChannel ( const URL url)
private

Referenced by GetJobManager().

◆ GetJobManager()

JobManager* XrdCl::PostMaster::GetJobManager ( )
inline

Get the job manager object user by the post master.

References GetChannel(), and pJobManager.

◆ GetTaskManager()

TaskManager* XrdCl::PostMaster::GetTaskManager ( )
inline

Get the task manager object user by the post master.

References pTaskManager.

◆ Initialize()

bool XrdCl::PostMaster::Initialize ( )

Initializer.

◆ QueryTransport()

Status XrdCl::PostMaster::QueryTransport ( const URL url,
uint16_t  query,
AnyObject result 
)

Query the transport handler for a given URL

Parameters
urlthe channel to be queried
querythe query as defined in the TransportQuery struct or others that may be recognized by the protocol transport
resultthe result of the query
Returns
status of the query

◆ Receive() [1/2]

Status XrdCl::PostMaster::Receive ( const URL url,
Message *&  msg,
MessageFilter filter,
time_t  expires 
)

Synchronously receive a message - blocks until a message matching a filter is found in the incoming queue or the timeout passes

Parameters
urlsender of the message
msgreference to a message pointer, the pointer will point to the received message
filterfilter object defining what to look for
expiresexpiration timestamp
Returns
success when the message has been received successfully, failure otherwise

◆ Receive() [2/2]

Status XrdCl::PostMaster::Receive ( const URL url,
IncomingMsgHandler handler,
time_t  expires 
)

Listen to incoming messages, the listener is notified when a new message arrives and when the timeout passes

Parameters
urlsender of the message
handlerhandler to be notified about new messages
expiresexpiration timestamp
Returns
success when the listener has been inserted correctly

◆ RegisterEventHandler()

Status XrdCl::PostMaster::RegisterEventHandler ( const URL url,
ChannelEventHandler handler 
)

Register channel event handler.

◆ Reinitialize()

bool XrdCl::PostMaster::Reinitialize ( )

Reinitialize after fork.

◆ RemoveEventHandler()

Status XrdCl::PostMaster::RemoveEventHandler ( const URL url,
ChannelEventHandler handler 
)

Remove a channel event handler.

◆ Send() [1/2]

Status XrdCl::PostMaster::Send ( const URL url,
Message msg,
bool  stateful,
time_t  expires 
)

Send a message synchronously - synchronously means that it will block until the message is written to a socket

DEADLOCK WARNING: no lock should be taken while calling this method that are used in the callback as well.

Parameters
urlrecipient of the message
msgmessage to be sent
statefulphysical stream disconnection causes an error
expiresunix timestamp after which a failure should be reported if sending was unsuccessful
Returns
success if the message has been pushed through the wire, failure otherwise

◆ Send() [2/2]

Status XrdCl::PostMaster::Send ( const URL url,
Message msg,
OutgoingMsgHandler handler,
bool  stateful,
time_t  expires 
)

Send the message asynchronously - the message is inserted into the send queue and a listener is called when the message is succesfsully pushed through the wire or when the timeout elapses

DEADLOCK WARNING: no lock should be taken while calling this method that are used in the callback as well.

Parameters
urlrecipient of the message
msgmessage to be sent
expiresunix timestamp after which a failure is reported to the handler
handlerhandler will be notified about the status
statefulphysical stream disconnection causes an error
Returns
success if the message was successfully inserted into the send queues, failure otherwise

◆ Start()

bool XrdCl::PostMaster::Start ( )

Start the post master.

◆ Stop()

bool XrdCl::PostMaster::Stop ( )

Stop the postmaster.

Member Data Documentation

◆ pChannelMap

ChannelMap XrdCl::PostMaster::pChannelMap
private

◆ pChannelMapMutex

XrdSysMutex XrdCl::PostMaster::pChannelMapMutex
private

◆ pInitialized

bool XrdCl::PostMaster::pInitialized
private

◆ pJobManager

JobManager* XrdCl::PostMaster::pJobManager
private

Referenced by GetJobManager().

◆ pPoller

Poller* XrdCl::PostMaster::pPoller
private

◆ pTaskManager

TaskManager* XrdCl::PostMaster::pTaskManager
private

Referenced by GetTaskManager().


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