xrootd
Public Member Functions | Private Attributes
XrdCl::Channel Class Reference

A communication channel between the client and the server. More...

#include <XrdClChannel.hh>

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

List of all members.

Public Member Functions

 Channel (const URL &url, Poller *poller, TransportHandler *transport, TaskManager *taskManager, JobManager *jobManager)
 ~Channel ()
 Destructor.
const URL & GetURL () const
 Get the URL.
Status Send (Message *msg, bool stateful, time_t expires)
Status Send (Message *msg, OutgoingMsgHandler *handler, bool stateful, time_t expires)
Status Receive (Message *&msg, MessageFilter *filter, time_t expires)
Status Receive (IncomingMsgHandler *handler, time_t expires)
Status QueryTransport (uint16_t query, AnyObject &result)
void RegisterEventHandler (ChannelEventHandler *handler)
 Register channel event handler.
void RemoveEventHandler (ChannelEventHandler *handler)
 Remove a channel event handler.
void Tick (time_t now)
 Handle a time event.

Private Attributes

URL pUrl
Poller * pPoller
TransportHandler * pTransport
TaskManager * pTaskManager
std::vector< Stream * > pStreams
XrdSysMutex pMutex
AnyObject pChannelData
InQueue pIncoming
Task * pTickGenerator
JobManager * pJobManager

Detailed Description

A communication channel between the client and the server.


Constructor & Destructor Documentation

XrdCl::Channel::Channel ( const URL &  url,
Poller *  poller,
TransportHandler *  transport,
TaskManager *  taskManager,
JobManager *  jobManager 
)

Constructor

Parameters:
urladdress of the server to connect to
pollerpoller object to be used for non-blocking IO
transportprotocol specific transport handler
taskManagerasync task handler to be used by the channel
jobManagerworker thread handler to be used by the channel

References XrdCl::Log::Debug(), XrdCl::DefaultTimeoutResolution, XrdCl::DefaultEnv::GetEnv(), XrdCl::URL::GetHostId(), XrdCl::Env::GetInt(), XrdCl::DefaultEnv::GetLog(), XrdCl::TransportHandler::InitializeChannel(), pChannelData, pIncoming, XrdCl::PostMasterMsg, pStreams, pTaskManager, pTickGenerator, pTransport, pUrl, XrdCl::TaskManager::RegisterTask(), and XrdCl::TransportHandler::StreamNumber().

XrdCl::Channel::~Channel ( )

Member Function Documentation

const URL& XrdCl::Channel::GetURL ( ) const
inline

Get the URL.

References pUrl.

Status XrdCl::Channel::QueryTransport ( uint16_t  query,
AnyObject &  result 
)

Query the transport handler

Parameters:
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

References pChannelData, pTransport, and XrdCl::TransportHandler::Query().

Referenced by XrdCl::PostMaster::QueryTransport().

Status XrdCl::Channel::Receive ( 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:
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

References XrdCl::Status::IsOK().

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

Status XrdCl::Channel::Receive ( IncomingMsgHandler *  handler,
time_t  expires 
)

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

Parameters:
handlerhandler to be notified about new messages
expiresexpiration timestamp
Returns:
success when the handler has been registered correctly

References XrdCl::InQueue::AddMessageHandler(), and pIncoming.

void XrdCl::Channel::RegisterEventHandler ( ChannelEventHandler *  handler)

Register channel event handler.

References pStreams.

Referenced by XrdCl::PostMaster::RegisterEventHandler().

void XrdCl::Channel::RemoveEventHandler ( ChannelEventHandler *  handler)

Remove a channel event handler.

References pStreams.

Referenced by XrdCl::PostMaster::RemoveEventHandler().

Status XrdCl::Channel::Send ( 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

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

References XrdCl::Status::IsOK().

Referenced by XrdCl::PostMaster::Send().

Status XrdCl::Channel::Send ( 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 successfully pushed through the wire or when the timeout elapses

Parameters:
msgmessage to be sent stateful physical stream disconnection causes an error
expiresunix timestamp after which a failure is reported to the listener
handlerhandler to be notified about the status
Returns:
success if the message was successfully inserted into the send queues, failure otherwise

References XrdCl::TransportHandler::Multiplex(), pChannelData, pStreams, pTransport, and XrdCl::PathID::up.

void XrdCl::Channel::Tick ( time_t  now)

Handle a time event.

References pStreams.


Member Data Documentation

AnyObject XrdCl::Channel::pChannelData
private
InQueue XrdCl::Channel::pIncoming
private

Referenced by Channel(), and Receive().

JobManager* XrdCl::Channel::pJobManager
private
XrdSysMutex XrdCl::Channel::pMutex
private
Poller* XrdCl::Channel::pPoller
private
std::vector<Stream *> XrdCl::Channel::pStreams
private
TaskManager* XrdCl::Channel::pTaskManager
private

Referenced by Channel(), and ~Channel().

Task* XrdCl::Channel::pTickGenerator
private

Referenced by Channel(), and ~Channel().

TransportHandler* XrdCl::Channel::pTransport
private
URL XrdCl::Channel::pUrl
private

Referenced by Channel(), and GetURL().


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