|
xrootd
|
A communication channel between the client and the server. More...
#include <XrdClChannel.hh>

Public Member Functions | |
| Channel (const URL &url, Poller *poller, TransportHandler *transport, TaskManager *taskManager, JobManager *jobManager) | |
| ~Channel () | |
| Destructor. More... | |
| const URL & | GetURL () const |
| Get the URL. More... | |
| 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. More... | |
| void | RemoveEventHandler (ChannelEventHandler *handler) |
| Remove a channel event handler. More... | |
| void | Tick (time_t now) |
| Handle a time event. More... | |
Private Attributes | |
| URL | pUrl |
| Poller * | pPoller |
| TransportHandler * | pTransport |
| TaskManager * | pTaskManager |
| std::vector< Stream * > | pStreams |
| XrdSysMutex | pMutex |
| AnyObject | pChannelData |
| InQueue | pIncoming |
| Task * | pTickGenerator |
| JobManager * | pJobManager |
A communication channel between the client and the server.
| XrdCl::Channel::Channel | ( | const URL & | url, |
| Poller * | poller, | ||
| TransportHandler * | transport, | ||
| TaskManager * | taskManager, | ||
| JobManager * | jobManager | ||
| ) |
Constructor
| url | address of the server to connect to |
| poller | poller object to be used for non-blocking IO |
| transport | protocol specific transport handler |
| taskManager | async task handler to be used by the channel |
| jobManager | worker 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 | ( | ) |
Destructor.
References XrdCl::TransportHandler::FinalizeChannel(), pChannelData, pStreams, pTaskManager, pTickGenerator, pTransport, and XrdCl::TaskManager::UnregisterTask().
Query the transport handler
| 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 |
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
| 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 |
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
| handler | handler to be notified about new messages |
| expires | expiration timestamp |
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().
Send a message synchronously - synchronously means that it will block until the message is written to a socket
| msg | message to be sent |
| expires | expiration timestamp after which a failure should be reported if sending was unsuccessful |
| stateful | physical stream disconnection causes an error |
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
| msg | message to be sent stateful physical stream disconnection causes an error |
| expires | unix timestamp after which a failure is reported to the listener |
| handler | handler to be notified about the status |
References XrdCl::TransportHandler::Multiplex(), pChannelData, pStreams, pTransport, and XrdCl::PathID::up.
| void XrdCl::Channel::Tick | ( | time_t | now | ) |
Handle a time event.
References pStreams.
|
private |
Referenced by Channel(), QueryTransport(), Send(), and ~Channel().
|
private |
|
private |
|
private |
|
private |
Referenced by Channel(), RegisterEventHandler(), RemoveEventHandler(), Send(), Tick(), and ~Channel().
|
private |
Referenced by Channel(), and ~Channel().
|
private |
Referenced by Channel(), and ~Channel().
|
private |
Referenced by Channel(), QueryTransport(), Send(), and ~Channel().
1.8.3.1