![]() |
XRootD
|
#include <XrdClStream.hh>
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. More... | |
~Stream () | |
Destructor. More... | |
bool | CanCollapse (const URL &url) |
void | DisableIfEmpty (uint16_t subStream) |
Disables respective uplink if empty. More... | |
void | Disconnect (bool force=false) |
Disconnect the stream. More... | |
XRootDStatus | EnableLink (PathID &path) |
void | ForceConnect () |
Force connection. More... | |
void | ForceError (XRootDStatus status, bool hush=false) |
Force error. More... | |
const std::string & | GetName () const |
Return stream name. More... | |
const URL * | GetURL () const |
Get the URL. More... | |
XRootDStatus | Initialize () |
Initializer. More... | |
uint16_t | InspectStatusRsp (uint16_t stream, MsgHandler *&incHandler) |
MsgHandler * | InstallIncHandler (std::shared_ptr< Message > &msg, uint16_t stream) |
void | OnConnect (uint16_t subStream) |
Call back when a message has been reconstructed. More... | |
void | OnConnectError (uint16_t subStream, XRootDStatus status) |
On connect error. More... | |
void | OnError (uint16_t subStream, XRootDStatus status) |
On error. More... | |
void | OnIncoming (uint16_t subStream, std::shared_ptr< Message > msg, uint32_t bytesReceived) |
Call back when a message has been reconstructed. More... | |
void | OnMessageSent (uint16_t subStream, Message *msg, uint32_t bytesSent) |
bool | OnReadTimeout (uint16_t subStream) XRD_WARN_UNUSED_RESULT |
On read timeout. More... | |
std::pair< Message *, MsgHandler * > | OnReadyToWrite (uint16_t subStream) |
bool | OnWriteTimeout (uint16_t subStream) XRD_WARN_UNUSED_RESULT |
On write timeout. More... | |
Status | Query (uint16_t query, AnyObject &result) |
Query the stream. More... | |
void | RegisterEventHandler (ChannelEventHandler *handler) |
Register channel event handler. More... | |
void | RemoveEventHandler (ChannelEventHandler *handler) |
Remove a channel event handler. More... | |
XRootDStatus | Send (Message *msg, MsgHandler *handler, bool stateful, time_t expires) |
Queue the message for sending. More... | |
void | SetChannelData (AnyObject *channelData) |
Set the channel data. More... | |
void | SetIncomingQueue (InQueue *incomingQueue) |
Set the incoming queue. More... | |
void | SetJobManager (JobManager *jobManager) |
Set job manager. More... | |
void | SetOnDataConnectHandler (std::shared_ptr< Job > &onConnJob) |
Set the on-connect handler for data streams. More... | |
void | SetPoller (Poller *poller) |
Set the poller. More... | |
void | SetTaskManager (TaskManager *taskManager) |
Set task manager. More... | |
void | SetTransport (TransportHandler *transport) |
Set the transport. More... | |
void | Tick (time_t now) |
Definition at line 51 of file XrdClStream.hh.
Status of the stream.
Enumerator | |
---|---|
Disconnected | Not connected. |
Connected | Connected. |
Connecting | In the process of being connected. |
Error | Broken. |
Definition at line 57 of file XrdClStream.hh.
Constructor.
Definition at line 96 of file XrdClStream.cc.
References XrdCl::Log::Debug(), XrdCl::DefaultConnectionRetry, XrdCl::DefaultConnectionWindow, XrdCl::DefaultNetworkStack, XrdCl::DefaultStreamErrorWindow, XrdCl::URL::GetHostId(), XrdCl::Utils::GetIntParameter(), XrdCl::DefaultEnv::GetLog(), XrdCl::Utils::GetStringParameter(), XrdNetUtils::hasIP64, XrdNetUtils::hasIPv4, XrdNetUtils::hasIPv6, XrdNetUtils::NetConfig(), XrdCl::PostMasterMsg, and XrdCl::Utils::String2AddressType().
XrdCl::Stream::~Stream | ( | ) |
Destructor.
Definition at line 153 of file XrdClStream.cc.
References XrdCl::Log::Debug(), Disconnect(), XrdCl::DefaultEnv::GetLog(), and XrdCl::PostMasterMsg.
bool XrdCl::Stream::CanCollapse | ( | const URL & | url | ) |
Definition at line 1173 of file XrdClStream.cc.
References XrdCl::Log::Error(), XrdCl::Utils::GetHostAddresses(), XrdCl::URL::GetHostName(), XrdCl::DefaultEnv::GetLog(), XrdCl::Status::IsOK(), and XrdCl::PostMasterMsg.
Referenced by XrdCl::Channel::CanCollapse().
void XrdCl::Stream::DisableIfEmpty | ( | uint16_t | subStream | ) |
Disables respective uplink if empty.
Definition at line 568 of file XrdClStream.cc.
References XrdCl::Log::Dump(), XrdCl::DefaultEnv::GetLog(), and XrdCl::PostMasterMsg.
Referenced by XrdCl::AsyncSocketHandler::OnWrite().
void XrdCl::Stream::Disconnect | ( | bool | force = false | ) |
Disconnect the stream.
Definition at line 363 of file XrdClStream.cc.
References XrdCl::Socket::Disconnected.
Referenced by ~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
Definition at line 187 of file XrdClStream.cc.
References XrdCl::Socket::Connected, XrdCl::Socket::Connecting, XrdCl::Socket::Disconnected, XrdCl::PathID::down, XrdCl::Log::Error(), XrdCl::Utils::GetHostAddresses(), XrdCl::URL::GetHostId(), XrdCl::URL::GetHostName(), XrdCl::DefaultEnv::GetLog(), XrdCl::Status::IsOK(), XrdCl::URL::IsValid(), XrdCl::Utils::LogHostAddresses(), XrdCl::PostMasterMsg, XrdCl::Status::status, XrdCl::stFatal, and XrdCl::PathID::up.
Referenced by ForceConnect(), OnConnectError(), OnError(), and Send().
void XrdCl::Stream::ForceConnect | ( | ) |
Force connection.
Definition at line 347 of file XrdClStream.cc.
References XrdCl::Socket::Connecting, XrdCl::Socket::Disconnected, EnableLink(), XrdCl::Status::IsOK(), and OnConnectError().
Referenced by XrdCl::Channel::ForceReconnect().
void XrdCl::Stream::ForceError | ( | XRootDStatus | status, |
bool | hush = false |
||
) |
Force error.
Definition at line 913 of file XrdClStream.cc.
References XrdCl::MsgHandler::Broken, XrdCl::Socket::Connected, XrdCl::Log::Debug(), XrdCl::Socket::Disconnected, XrdCl::OutQueue::MsgHelper::expires, XrdCl::InMessageHelper::expires, XrdCl::DefaultEnv::GetLog(), XrdCl::OutQueue::GrabItems(), XrdCl::OutQueue::MsgHelper::handler, XrdCl::InMessageHelper::handler, XrdCl::OutQueue::MsgHelper::msg, XrdCl::XRootDMsgHandler::PartialReceived(), XrdCl::PostMasterMsg, XrdCl::InQueue::ReAddMessageHandler(), XrdCl::OutQueue::Report(), XrdCl::ChannelHandlerList::ReportEvent(), XrdCl::InQueue::ReportStreamEvent(), XrdCl::InMessageHelper::Reset(), XrdCl::OutQueue::MsgHelper::stateful, XrdCl::ChannelEventHandler::StreamBroken, XrdCl::Status::ToString(), and XrdSysMutexHelper::UnLock().
Referenced by XrdCl::Channel::ForceDisconnect(), and XrdCl::AsyncSocketHandler::OnHeaderCorruption().
|
inline |
Return stream name.
Definition at line 170 of file XrdClStream.hh.
|
inline |
Get the URL.
Definition at line 157 of file XrdClStream.hh.
Referenced by XrdCl::AsyncSocketHandler::OnConnectionReturn().
XRootDStatus XrdCl::Stream::Initialize | ( | ) |
Initializer.
Definition at line 171 of file XrdClStream.cc.
References XrdCl::errUninitialized, and XrdCl::stError.
Referenced by XrdCl::Channel::Channel().
uint16_t XrdCl::Stream::InspectStatusRsp | ( | uint16_t | stream, |
MsgHandler *& | incHandler | ||
) |
In case the message is a kXR_status response it needs further attention
Definition at line 1142 of file XrdClStream.cc.
References XrdCl::InMessageHelper::action, XrdCl::MsgHandler::Corrupted, XrdCl::InMessageHelper::handler, XrdCl::MsgHandler::InspectStatusRsp(), XrdCl::MsgHandler::More, XrdCl::MsgHandler::None, XrdCl::MsgHandler::Raw, XrdCl::MsgHandler::RemoveHandler, and XrdCl::InQueue::RemoveMessageHandler().
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 |
Definition at line 1121 of file XrdClStream.cc.
References XrdCl::InMessageHelper::action, XrdCl::InMessageHelper::expires, XrdCl::InQueue::GetHandlerForMessage(), XrdCl::InMessageHelper::handler, and XrdCl::MsgHandler::Raw.
Referenced by XrdCl::AsyncMsgReader::Read().
void XrdCl::Stream::OnConnect | ( | uint16_t | subStream | ) |
Call back when a message has been reconstructed.
Definition at line 610 of file XrdClStream.cc.
References XrdCl::Monitor::ConnectInfo::auth, XrdCl::TransportQuery::Auth, XrdCl::Socket::Connected, XrdCl::Socket::Connecting, XrdCl::Log::Debug(), XrdCl::Monitor::ConnectInfo::eTOD, XrdCl::Monitor::EvConnect, XrdCl::Monitor::Event(), XrdCl::AnyObject::Get(), XrdCl::TransportHandler::GetBindPreference(), XrdCl::URL::GetHostId(), XrdCl::DefaultEnv::GetLog(), XrdCl::DefaultEnv::GetMonitor(), XrdCl::DefaultEnv::GetPostMaster(), XrdCl::Status::IsOK(), XrdCl::PostMaster::NotifyConnectHandler(), XrdCl::PostMasterMsg, XrdCl::TransportHandler::Query(), XrdCl::JobManager::QueueJob(), XrdCl::Monitor::ConnectInfo::server, XrdCl::Monitor::ConnectInfo::sTOD, XrdCl::Monitor::ConnectInfo::streams, and XrdCl::TransportHandler::SubStreamNumber().
Referenced by XrdCl::AsyncSocketHandler::HandShakeNextStep().
void XrdCl::Stream::OnConnectError | ( | uint16_t | subStream, |
XRootDStatus | status | ||
) |
On connect error.
Definition at line 709 of file XrdClStream.cc.
References XrdCl::Socket::Connected, XrdCl::Socket::Connecting, XrdCl::Socket::Disconnected, EnableLink(), XrdCl::Log::Error(), XrdCl::DefaultEnv::GetLog(), XrdCl::DefaultEnv::GetPostMaster(), XrdCl::Log::Info(), XrdCl::Status::IsFatal(), XrdCl::Status::IsOK(), XrdCl::PostMaster::NotifyConnErrHandler(), XrdCl::PostMasterMsg, and XrdCl::TaskManager::RegisterTask().
Referenced by ForceConnect(), XrdCl::AsyncSocketHandler::OnConnectionReturn(), and XrdCl::AsyncSocketHandler::OnFaultWhileHandshaking().
void XrdCl::Stream::OnError | ( | uint16_t | subStream, |
XRootDStatus | status | ||
) |
On error.
Definition at line 809 of file XrdClStream.cc.
References XrdCl::MsgHandler::Broken, XrdCl::Socket::Connected, XrdCl::Log::Debug(), XrdCl::Socket::Disconnected, EnableLink(), XrdCl::OutQueue::MsgHelper::expires, XrdCl::InMessageHelper::expires, XrdCl::DefaultEnv::GetLog(), XrdCl::OutQueue::GrabStateful(), XrdCl::OutQueue::MsgHelper::handler, XrdCl::InMessageHelper::handler, XrdCl::Status::IsOK(), XrdCl::OutQueue::MsgHelper::msg, XrdCl::XRootDMsgHandler::PartialReceived(), XrdCl::PostMasterMsg, XrdCl::InQueue::ReAddMessageHandler(), XrdCl::OutQueue::Report(), XrdCl::ChannelHandlerList::ReportEvent(), XrdCl::InQueue::ReportStreamEvent(), XrdCl::InMessageHelper::Reset(), XrdCl::OutQueue::MsgHelper::stateful, XrdCl::ChannelEventHandler::StreamBroken, XrdCl::Status::ToString(), and XrdSysMutexHelper::UnLock().
Referenced by XrdCl::AsyncSocketHandler::OnFault(), and OnReadTimeout().
void XrdCl::Stream::OnIncoming | ( | uint16_t | subStream, |
std::shared_ptr< Message > | msg, | ||
uint32_t | bytesReceived | ||
) |
Call back when a message has been reconstructed.
Definition at line 471 of file XrdClStream.cc.
References XrdCl::InMessageHelper::action, XrdCl::TransportHandler::DigestMsg, XrdCl::Log::Dump(), XrdCl::DefaultEnv::GetLog(), XrdCl::InMessageHelper::handler, ServerResponse::hdr, XrdCl::MsgHandler::Ignore, XrdCl::TransportHandler::MessageReceived(), XrdCl::MsgHandler::NoProcess, XrdCl::XRootDMsgHandler::PartialReceived(), XrdCl::PostMasterMsg, XrdCl::JobManager::QueueJob(), XrdCl::TransportHandler::RequestClose, XrdCl::InMessageHelper::Reset(), ServerResponseHeader::status, ServerResponseHeader::streamid, and XrdCl::Log::Warning().
Referenced by XrdCl::AsyncMsgReader::Read().
void XrdCl::Stream::OnMessageSent | ( | uint16_t | subStream, |
Message * | msg, | ||
uint32_t | bytesSent | ||
) |
Definition at line 584 of file XrdClStream.cc.
References XrdCl::InQueue::AddMessageHandler(), XrdCl::MsgHandler::GetExpiration(), XrdCl::DefaultEnv::GetLog(), XrdCl::OutQueue::MsgHelper::handler, XrdCl::TransportHandler::MessageSent(), XrdCl::MsgHandler::OnStatusReady(), XrdCl::PostMasterMsg, and XrdCl::Log::Warning().
Referenced by XrdCl::AsyncMsgWriter::Write().
bool XrdCl::Stream::OnReadTimeout | ( | uint16_t | subStream | ) |
On read timeout.
Definition at line 1029 of file XrdClStream.cc.
References XrdCl::Log::Debug(), XrdCl::PostMaster::ForceDisconnect(), XrdCl::DefaultEnv::GetLog(), XrdCl::DefaultEnv::GetPostMaster(), XrdCl::Status::IsOK(), XrdCl::TransportHandler::IsStreamBroken(), XrdCl::TransportHandler::IsStreamTTLElapsed(), OnError(), XrdCl::PostMasterMsg, and XrdSysMutexHelper::UnLock().
Referenced by XrdCl::AsyncSocketHandler::OnReadTimeout().
std::pair< Message *, MsgHandler * > XrdCl::Stream::OnReadyToWrite | ( | uint16_t | subStream | ) |
Definition at line 545 of file XrdClStream.cc.
References XrdCl::Log::Dump(), XrdCl::OutQueue::MsgHelper::expires, XrdCl::DefaultEnv::GetLog(), XrdCl::OutQueue::MsgHelper::handler, XrdCl::OutQueue::MsgHelper::msg, XrdCl::MsgHandler::OnReadyToSend(), XrdCl::PostMasterMsg, XrdCl::OutQueue::MsgHelper::stateful, and XrdSysMutexHelper::UnLock().
Referenced by XrdCl::AsyncMsgWriter::Write().
bool XrdCl::Stream::OnWriteTimeout | ( | uint16_t | subStream | ) |
On write timeout.
Definition at line 1096 of file XrdClStream.cc.
Referenced by XrdCl::AsyncSocketHandler::OnWriteTimeout().
Query the stream.
Definition at line 1218 of file XrdClStream.cc.
References XrdCl::errQueryNotSupported, XrdCl::StreamQuery::HostName, XrdCl::StreamQuery::IpAddr, XrdCl::StreamQuery::IpStack, XrdCl::AnyObject::Set(), and XrdCl::stError.
Referenced by XrdCl::Channel::QueryTransport().
void XrdCl::Stream::RegisterEventHandler | ( | ChannelEventHandler * | handler | ) |
Register channel event handler.
Definition at line 1104 of file XrdClStream.cc.
References XrdCl::ChannelHandlerList::AddHandler().
Referenced by XrdCl::Channel::RegisterEventHandler().
void XrdCl::Stream::RemoveEventHandler | ( | ChannelEventHandler * | handler | ) |
Remove a channel event handler.
Definition at line 1112 of file XrdClStream.cc.
References XrdCl::ChannelHandlerList::RemoveHandler().
Referenced by XrdCl::Channel::RemoveEventHandler().
XRootDStatus XrdCl::Stream::Send | ( | Message * | msg, |
MsgHandler * | handler, | ||
bool | stateful, | ||
time_t | expires | ||
) |
Queue the message for sending.
Definition at line 297 of file XrdClStream.cc.
References XrdCl::Socket::Connected, XrdCl::PathID::down, XrdCl::Log::Dump(), EnableLink(), XrdCl::errInvalidSession, XrdCl::DefaultEnv::GetLog(), XrdCl::Message::GetObfuscatedDescription(), XrdCl::Message::GetSessionId(), XrdCl::Status::IsOK(), XrdCl::TransportHandler::MultiplexSubStream(), XrdCl::PostMasterMsg, XrdCl::Status::status, XrdCl::stError, XrdCl::stFatal, XrdCl::PathID::up, and XrdCl::Log::Warning().
Referenced by XrdCl::Channel::Send().
|
inline |
Set the channel data.
Definition at line 115 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
|
inline |
Set the incoming queue.
Definition at line 107 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
|
inline |
Set job manager.
Definition at line 131 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
|
inline |
Set the on-connect handler for data streams.
Definition at line 263 of file XrdClStream.hh.
Referenced by XrdCl::Channel::SetOnDataConnectHandler().
|
inline |
Set the poller.
Definition at line 99 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
|
inline |
Set task manager.
Definition at line 123 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
|
inline |
Set the transport.
Definition at line 91 of file XrdClStream.hh.
Referenced by XrdCl::Channel::Channel().
void XrdCl::Stream::Tick | ( | time_t | now | ) |
Handle a clock event generated either by socket timeout, or by the task manager event
Definition at line 377 of file XrdClStream.cc.
References XrdCl::errOperationExpired, XrdCl::OutQueue::GrabExpired(), XrdSysMutex::Lock(), XrdCl::OutQueue::Report(), XrdCl::InQueue::ReportTimeout(), XrdCl::stError, and XrdSysMutex::UnLock().
Referenced by XrdCl::Channel::Tick().