xrootd
|
#include <XrdClStream.hh>
Classes | |
class | HandleIncMsgJob |
Public Types | |
enum | StreamStatus { Disconnected = 0 , Connected = 1 , Connecting = 2 , Error = 3 } |
Status of the stream. More... | |
Public Member Functions | |
Stream (const URL *url, const URL &prefer=URL()) | |
Constructor. | |
~Stream () | |
Destructor. | |
XRootDStatus | Initialize () |
Initializer. | |
XRootDStatus | Send (Message *msg, MsgHandler *handler, bool stateful, time_t expires) |
Queue the message for sending. | |
void | SetTransport (TransportHandler *transport) |
Set the transport. | |
void | SetPoller (Poller *poller) |
Set the poller. | |
void | SetIncomingQueue (InQueue *incomingQueue) |
Set the incoming queue. | |
void | SetChannelData (AnyObject *channelData) |
Set the channel data. | |
void | SetTaskManager (TaskManager *taskManager) |
Set task manager. | |
void | SetJobManager (JobManager *jobManager) |
Set job manager. | |
XRootDStatus | EnableLink (PathID &path) |
void | Disconnect (bool force=false) |
Disconnect the stream. | |
void | Tick (time_t now) |
const URL * | GetURL () const |
Get the URL. | |
void | ForceConnect () |
Force connection. | |
const std::string & | GetName () const |
Return stream name. | |
void | DisableIfEmpty (uint16_t subStream) |
Disables respective uplink if empty. | |
void | OnIncoming (uint16_t subStream, std::shared_ptr< Message > msg, uint32_t bytesReceived) |
Call back when a message has been reconstructed. | |
std::pair< Message *, MsgHandler * > | OnReadyToWrite (uint16_t subStream) |
void | OnMessageSent (uint16_t subStream, Message *msg, uint32_t bytesSent) |
void | OnConnect (uint16_t subStream) |
Call back when a message has been reconstructed. | |
void | OnConnectError (uint16_t subStream, XRootDStatus status) |
On connect error. | |
void | OnError (uint16_t subStream, XRootDStatus status) |
On error. | |
void | ForceError (XRootDStatus status) |
Force error. | |
bool | OnReadTimeout (uint16_t subStream) XRD_WARN_UNUSED_RESULT |
On read timeout. | |
bool | OnWriteTimeout (uint16_t subStream) XRD_WARN_UNUSED_RESULT |
On write timeout. | |
void | RegisterEventHandler (ChannelEventHandler *handler) |
Register channel event handler. | |
void | RemoveEventHandler (ChannelEventHandler *handler) |
Remove a channel event handler. | |
MsgHandler * | InstallIncHandler (std::shared_ptr< Message > &msg, uint16_t stream) |
uint16_t | InspectStatusRsp (uint16_t stream, MsgHandler *&incHandler) |
void | SetOnDataConnectHandler (std::shared_ptr< Job > &onConnJob) |
Set the on-connect handler for data streams. | |
bool | CanCollapse (const URL &url) |
Status | Query (uint16_t query, AnyObject &result) |
Query the stream. | |
Private Types | |
typedef std::vector< SubStreamData * > | SubStreamList |
Private Member Functions | |
void | OnFatalError (uint16_t subStream, XRootDStatus status, XrdSysMutexHelper &lock) |
On fatal error - unlocks the stream. | |
void | MonitorDisconnection (XRootDStatus status) |
Inform the monitoring about disconnection. | |
XRootDStatus | RequestClose (Message &resp) |
Send close after an open request timed out. | |
Static Private Member Functions | |
static bool | IsPartial (Message &msg) |
Check if message is a partial response. | |
static bool | HasNetAddr (const XrdNetAddr &addr, std::vector< XrdNetAddr > &addresses) |
Check if addresses contains given address. | |
Private Attributes | |
const URL * | pUrl |
const URL | pPrefer |
std::string | pStreamName |
TransportHandler * | pTransport |
Poller * | pPoller |
TaskManager * | pTaskManager |
JobManager * | pJobManager |
XrdSysRecMutex | pMutex |
InQueue * | pIncomingQueue |
AnyObject * | pChannelData |
uint32_t | pLastStreamError |
XRootDStatus | pLastFatalError |
uint16_t | pStreamErrorWindow |
uint16_t | pConnectionCount |
uint16_t | pConnectionRetry |
time_t | pConnectionInitTime |
uint16_t | pConnectionWindow |
SubStreamList | pSubStreams |
std::vector< XrdNetAddr > | pAddresses |
Utils::AddressType | pAddressType |
ChannelHandlerList | pChannelEvHandlers |
uint64_t | pSessionId |
timeval | pConnectionStarted |
timeval | pConnectionDone |
uint64_t | pBytesSent |
uint64_t | pBytesReceived |
std::shared_ptr< Job > | pOnDataConnJob |
Static Private Attributes | |
static RAtomic_uint64_t | sSessCntGen |
|
private |
Status of the stream.
Enumerator | |
---|---|
Disconnected | Not connected. |
Connected | Connected. |
Connecting | In the process of being connected. |
Error | Broken. |
XrdCl::Stream::~Stream | ( | ) |
Destructor.
bool XrdCl::Stream::CanCollapse | ( | const URL & | url | ) |
void XrdCl::Stream::DisableIfEmpty | ( | uint16_t | subStream | ) |
Disables respective uplink if empty.
void XrdCl::Stream::Disconnect | ( | bool | force = false | ) |
Disconnect the stream.
XRootDStatus XrdCl::Stream::EnableLink | ( | PathID & | path | ) |
Connect if needed, otherwise make sure that the underlying socket handler gets write readiness events, it will update the path with what it has actually enabled
void XrdCl::Stream::ForceConnect | ( | ) |
Force connection.
void XrdCl::Stream::ForceError | ( | XRootDStatus | status | ) |
Force error.
|
inline |
Return stream name.
References pStreamName.
|
inlinestaticprivate |
Check if addresses contains given address.
XRootDStatus XrdCl::Stream::Initialize | ( | ) |
Initializer.
uint16_t XrdCl::Stream::InspectStatusRsp | ( | uint16_t | stream, |
MsgHandler *& | incHandler | ||
) |
In case the message is a kXR_status response it needs further attention
Referenced by XrdCl::AsyncMsgReader::Read().
MsgHandler * XrdCl::Stream::InstallIncHandler | ( | std::shared_ptr< Message > & | msg, |
uint16_t | stream | ||
) |
Install a message handler for the given message if there is one available, if the handler want's to be called in the raw mode it will be returned, the message ownership flag is returned in any case
msg | message header |
stream | stream concerned |
Referenced by XrdCl::AsyncMsgReader::Read().
|
staticprivate |
Check if message is a partial response.
|
private |
Inform the monitoring about disconnection.
void XrdCl::Stream::OnConnect | ( | uint16_t | subStream | ) |
Call back when a message has been reconstructed.
void XrdCl::Stream::OnConnectError | ( | uint16_t | subStream, |
XRootDStatus | status | ||
) |
On connect error.
void XrdCl::Stream::OnError | ( | uint16_t | subStream, |
XRootDStatus | status | ||
) |
On error.
|
private |
On fatal error - unlocks the stream.
void XrdCl::Stream::OnIncoming | ( | uint16_t | subStream, |
std::shared_ptr< Message > | msg, | ||
uint32_t | bytesReceived | ||
) |
Call back when a message has been reconstructed.
Referenced by XrdCl::AsyncMsgReader::Read().
void XrdCl::Stream::OnMessageSent | ( | uint16_t | subStream, |
Message * | msg, | ||
uint32_t | bytesSent | ||
) |
Referenced by XrdCl::AsyncMsgWriter::Write().
bool XrdCl::Stream::OnReadTimeout | ( | uint16_t | subStream | ) |
On read timeout.
std::pair< Message *, MsgHandler * > XrdCl::Stream::OnReadyToWrite | ( | uint16_t | subStream | ) |
Referenced by XrdCl::AsyncMsgWriter::Write().
bool XrdCl::Stream::OnWriteTimeout | ( | uint16_t | subStream | ) |
On write timeout.
void XrdCl::Stream::RegisterEventHandler | ( | ChannelEventHandler * | handler | ) |
Register channel event handler.
void XrdCl::Stream::RemoveEventHandler | ( | ChannelEventHandler * | handler | ) |
Remove a channel event handler.
|
private |
Send close after an open request timed out.
XRootDStatus XrdCl::Stream::Send | ( | Message * | msg, |
MsgHandler * | handler, | ||
bool | stateful, | ||
time_t | expires | ||
) |
Queue the message for sending.
|
inline |
Set the channel data.
References pChannelData.
|
inline |
Set the incoming queue.
References pIncomingQueue.
|
inline |
Set job manager.
References pJobManager.
|
inline |
Set the on-connect handler for data streams.
References pMutex, and pOnDataConnJob.
|
inline |
Set task manager.
References pTaskManager.
|
inline |
Set the transport.
References pTransport.
void XrdCl::Stream::Tick | ( | time_t | now | ) |
Handle a clock event generated either by socket timeout, or by the task manager event
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by SetChannelData().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by SetIncomingQueue().
|
private |
Referenced by SetJobManager().
|
private |
|
private |
|
private |
Referenced by SetOnDataConnectHandler().
|
private |
Referenced by SetOnDataConnectHandler().
|
private |
Referenced by SetPoller().
|
private |
|
private |
|
private |
|
private |
Referenced by GetName().
|
private |
|
private |
Referenced by SetTaskManager().
|
private |
Referenced by SetTransport().
|
staticprivate |