XrdCl::PostMaster Class Reference

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

#include <XrdClPostMaster.hh>

Collaboration diagram for XrdCl::PostMaster:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 PostMaster ()
 Constructor.
virtual ~PostMaster ()
 Destructor.
bool Initialize ()
 Initializer.
bool Finalize ()
 Finalizer.
bool Start ()
 Start the post master.
bool Stop ()
 Stop the postmaster.
bool Reinitialize ()
 Reinitialize after fork.
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.
Status RemoveEventHandler (const URL &url, ChannelEventHandler *handler)
 Remove a channel event handler.
TaskManager * GetTaskManager ()
 Get the task manager object user by the post master.
JobManager * GetJobManager ()
 Get the job manager object user by the post master.

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

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


Constructor & Destructor Documentation

XrdCl::PostMaster::PostMaster (  ) 

Constructor.

virtual XrdCl::PostMaster::~PostMaster (  )  [virtual]

Destructor.


Member Function Documentation

bool XrdCl::PostMaster::Finalize (  ) 

Finalizer.

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

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

Get the job manager object user by the post master.

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

Get the task manager object user by the post master.

bool XrdCl::PostMaster::Initialize (  ) 

Initializer.

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

Query the transport handler for a given URL

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

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:
url sender of the message
handler handler to be notified about new messages
expires expiration timestamp
Returns:
success when the listener has been inserted correctly

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:
url sender of the message
msg reference to a message pointer, the pointer will point to the received message
filter filter object defining what to look for
expires expiration timestamp
Returns:
success when the message has been received successfully, failure otherwise

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

Register channel event handler.

bool XrdCl::PostMaster::Reinitialize (  ) 

Reinitialize after fork.

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

Remove a channel event handler.

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:
url recipient of the message
msg message to be sent
expires unix timestamp after which a failure is reported to the handler
handler handler will be notified about the status
stateful physical stream disconnection causes an error
Returns:
success if the message was successfully inserted into the send queues, failure otherwise

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:
url recipient of the message
msg message to be sent
statful physical stream disconnection causes an error
expires unix 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

bool XrdCl::PostMaster::Start (  ) 

Start the post master.

bool XrdCl::PostMaster::Stop (  ) 

Stop the postmaster.


Member Data Documentation

ChannelMap XrdCl::PostMaster::pChannelMap [private]

XrdSysMutex XrdCl::PostMaster::pChannelMapMutex [private]

bool XrdCl::PostMaster::pInitialized [private]

JobManager* XrdCl::PostMaster::pJobManager [private]

Poller* XrdCl::PostMaster::pPoller [private]

TaskManager* XrdCl::PostMaster::pTaskManager [private]


The documentation for this class was generated from the following file:
Generated on 16 Jan 2014 for xrootd by  doxygen 1.4.7