xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
XrdCl::Stream Class Reference

Stream. More...

#include <XrdClStream.hh>

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

Classes

class  HandleIncMsgJob
 
class  QueueIncMsgJob
 

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...
 
XRootDStatus Initialize ()
 Initializer. More...
 
XRootDStatus Send (Message *msg, MsgHandler *handler, bool stateful, time_t expires)
 Queue the message for sending. More...
 
void SetTransport (TransportHandler *transport)
 Set the transport. More...
 
void SetPoller (Poller *poller)
 Set the poller. More...
 
void SetIncomingQueue (InQueue *incomingQueue)
 Set the incoming queue. More...
 
void SetChannelData (AnyObject *channelData)
 Set the channel data. More...
 
void SetTaskManager (TaskManager *taskManager)
 Set task manager. More...
 
void SetJobManager (JobManager *jobManager)
 Set job manager. More...
 
XRootDStatus EnableLink (PathID &path)
 
void Disconnect (bool force=false)
 Disconnect the stream. More...
 
void Tick (time_t now)
 
const URLGetURL () const
 Get the URL. More...
 
void ForceConnect ()
 Force connection. More...
 
const std::string & GetName () const
 Return stream name. More...
 
void DisableIfEmpty (uint16_t subStream)
 Disables respective uplink if empty. More...
 
void OnIncoming (uint16_t subStream, std::shared_ptr< Message > msg, uint32_t bytesReceived)
 Call back when a message has been reconstructed. More...
 
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. More...
 
void OnConnectError (uint16_t subStream, XRootDStatus status)
 On connect error. More...
 
void OnError (uint16_t subStream, XRootDStatus status)
 On error. More...
 
void ForceError (XRootDStatus status)
 Force error. More...
 
void OnReadTimeout (uint16_t subStream, bool &isBroken)
 On read timeout. More...
 
void OnWriteTimeout (uint16_t subStream)
 On write timeout. More...
 
void RegisterEventHandler (ChannelEventHandler *handler)
 Register channel event handler. More...
 
void RemoveEventHandler (ChannelEventHandler *handler)
 Remove a channel event handler. More...
 
MsgHandlerInstallIncHandler (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. More...
 
bool CanCollapse (const URL &url)
 

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. More...
 
void MonitorDisconnection (XRootDStatus status)
 Inform the monitoring about disconnection. More...
 
XRootDStatus RequestClose (Message &resp)
 Send close after an open request timed out. More...
 

Static Private Member Functions

static bool IsPartial (Message &msg)
 Check if message is a partial response. More...
 
static bool HasNetAddr (const XrdNetAddr &addr, std::vector< XrdNetAddr > &addresses)
 Check if addresses contains given address. More...
 

Private Attributes

const URLpUrl
 
const URL pPrefer
 
std::string pStreamName
 
TransportHandlerpTransport
 
PollerpPoller
 
TaskManagerpTaskManager
 
JobManagerpJobManager
 
XrdSysRecMutex pMutex
 
InQueuepIncomingQueue
 
AnyObjectpChannelData
 
uint32_t pLastStreamError
 
XRootDStatus pLastFatalError
 
uint16_t pStreamErrorWindow
 
uint16_t pConnectionCount
 
uint16_t pConnectionRetry
 
time_t pConnectionInitTime
 
uint16_t pConnectionWindow
 
SubStreamList pSubStreams
 
std::vector< XrdNetAddrpAddresses
 
Utils::AddressType pAddressType
 
ChannelHandlerList pChannelEvHandlers
 
uint64_t pSessionId
 
timeval pConnectionStarted
 
timeval pConnectionDone
 
uint64_t pBytesSent
 
uint64_t pBytesReceived
 
std::shared_ptr< JobpOnDataConnJob
 

Detailed Description

Stream.

Member Typedef Documentation

typedef std::vector<SubStreamData*> XrdCl::Stream::SubStreamList
private

Member Enumeration Documentation

Status of the stream.

Enumerator
Disconnected 

Not connected.

Connected 

Connected.

Connecting 

In the process of being connected.

Error 

Broken.

Constructor & Destructor Documentation

XrdCl::Stream::Stream ( const URL url,
const URL prefer = URL() 
)

Constructor.

XrdCl::Stream::~Stream ( )

Destructor.

Member Function Documentation

bool XrdCl::Stream::CanCollapse ( const URL url)
Returns
: true is this channel can be collapsed using this URL, false otherwise
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.

const std::string& XrdCl::Stream::GetName ( ) const
inline

Return stream name.

References pStreamName.

const URL* XrdCl::Stream::GetURL ( ) const
inline

Get the URL.

References pUrl.

static bool XrdCl::Stream::HasNetAddr ( const XrdNetAddr addr,
std::vector< XrdNetAddr > &  addresses 
)
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

Returns
: a MsgHandler in case we need to read out raw data

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

Parameters
msgmessage header
streamstream concerned
Returns
a pair containing the handler and ownership flag

Referenced by XrdCl::AsyncMsgReader::Read().

static bool XrdCl::Stream::IsPartial ( Message msg)
staticprivate

Check if message is a partial response.

void XrdCl::Stream::MonitorDisconnection ( XRootDStatus  status)
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.

void XrdCl::Stream::OnFatalError ( uint16_t  subStream,
XRootDStatus  status,
XrdSysMutexHelper lock 
)
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 
)
void XrdCl::Stream::OnReadTimeout ( uint16_t  subStream,
bool &  isBroken 
)

On read timeout.

std::pair<Message *, MsgHandler *> XrdCl::Stream::OnReadyToWrite ( uint16_t  subStream)
void 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.

XRootDStatus XrdCl::Stream::RequestClose ( Message resp)
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.

void XrdCl::Stream::SetChannelData ( AnyObject channelData)
inline

Set the channel data.

References pChannelData.

void XrdCl::Stream::SetIncomingQueue ( InQueue incomingQueue)
inline

Set the incoming queue.

References pIncomingQueue.

void XrdCl::Stream::SetJobManager ( JobManager jobManager)
inline

Set job manager.

References pJobManager.

void XrdCl::Stream::SetOnDataConnectHandler ( std::shared_ptr< Job > &  onConnJob)
inline

Set the on-connect handler for data streams.

References pOnDataConnJob.

void XrdCl::Stream::SetPoller ( Poller poller)
inline

Set the poller.

References pPoller.

void XrdCl::Stream::SetTaskManager ( TaskManager taskManager)
inline

Set task manager.

References pTaskManager.

void XrdCl::Stream::SetTransport ( TransportHandler transport)
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

Member Data Documentation

std::vector<XrdNetAddr> XrdCl::Stream::pAddresses
private
Utils::AddressType XrdCl::Stream::pAddressType
private
uint64_t XrdCl::Stream::pBytesReceived
private
uint64_t XrdCl::Stream::pBytesSent
private
AnyObject* XrdCl::Stream::pChannelData
private

Referenced by SetChannelData().

ChannelHandlerList XrdCl::Stream::pChannelEvHandlers
private
uint16_t XrdCl::Stream::pConnectionCount
private
timeval XrdCl::Stream::pConnectionDone
private
time_t XrdCl::Stream::pConnectionInitTime
private
uint16_t XrdCl::Stream::pConnectionRetry
private
timeval XrdCl::Stream::pConnectionStarted
private
uint16_t XrdCl::Stream::pConnectionWindow
private
InQueue* XrdCl::Stream::pIncomingQueue
private

Referenced by SetIncomingQueue().

JobManager* XrdCl::Stream::pJobManager
private

Referenced by SetJobManager().

XRootDStatus XrdCl::Stream::pLastFatalError
private
uint32_t XrdCl::Stream::pLastStreamError
private
XrdSysRecMutex XrdCl::Stream::pMutex
private
std::shared_ptr<Job> XrdCl::Stream::pOnDataConnJob
private

Referenced by SetOnDataConnectHandler().

Poller* XrdCl::Stream::pPoller
private

Referenced by SetPoller().

const URL XrdCl::Stream::pPrefer
private
uint64_t XrdCl::Stream::pSessionId
private
uint16_t XrdCl::Stream::pStreamErrorWindow
private
std::string XrdCl::Stream::pStreamName
private

Referenced by GetName().

SubStreamList XrdCl::Stream::pSubStreams
private
TaskManager* XrdCl::Stream::pTaskManager
private

Referenced by SetTaskManager().

TransportHandler* XrdCl::Stream::pTransport
private

Referenced by SetTransport().

const URL* XrdCl::Stream::pUrl
private

Referenced by GetURL().


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