xrootd
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static 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
 

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 URLGetURL () 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.
 
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.
 
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 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
 

Static Private Attributes

static RAtomic_uint64_t sSessCntGen
 

Detailed Description

Stream.

Member Typedef Documentation

◆ SubStreamList

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

Member Enumeration Documentation

◆ StreamStatus

Status of the stream.

Enumerator
Disconnected 

Not connected.

Connected 

Connected.

Connecting 

In the process of being connected.

Error 

Broken.

Constructor & Destructor Documentation

◆ Stream()

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

Constructor.

◆ ~Stream()

XrdCl::Stream::~Stream ( )

Destructor.

Member Function Documentation

◆ CanCollapse()

bool XrdCl::Stream::CanCollapse ( const URL url)
Returns
: true is this channel can be collapsed using this URL, false otherwise

◆ DisableIfEmpty()

void XrdCl::Stream::DisableIfEmpty ( uint16_t  subStream)

Disables respective uplink if empty.

◆ Disconnect()

void XrdCl::Stream::Disconnect ( bool  force = false)

Disconnect the stream.

◆ EnableLink()

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

◆ ForceConnect()

void XrdCl::Stream::ForceConnect ( )

Force connection.

◆ ForceError()

void XrdCl::Stream::ForceError ( XRootDStatus  status)

Force error.

◆ GetName()

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

Return stream name.

References pStreamName.

◆ GetURL()

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

Get the URL.

References pUrl.

◆ HasNetAddr()

static bool XrdCl::Stream::HasNetAddr ( const XrdNetAddr addr,
std::vector< XrdNetAddr > &  addresses 
)
inlinestaticprivate

Check if addresses contains given address.

◆ Initialize()

XRootDStatus XrdCl::Stream::Initialize ( )

Initializer.

◆ InspectStatusRsp()

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().

◆ InstallIncHandler()

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().

◆ IsPartial()

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

Check if message is a partial response.

◆ MonitorDisconnection()

void XrdCl::Stream::MonitorDisconnection ( XRootDStatus  status)
private

Inform the monitoring about disconnection.

◆ OnConnect()

void XrdCl::Stream::OnConnect ( uint16_t  subStream)

Call back when a message has been reconstructed.

◆ OnConnectError()

void XrdCl::Stream::OnConnectError ( uint16_t  subStream,
XRootDStatus  status 
)

On connect error.

◆ OnError()

void XrdCl::Stream::OnError ( uint16_t  subStream,
XRootDStatus  status 
)

On error.

◆ OnFatalError()

void XrdCl::Stream::OnFatalError ( uint16_t  subStream,
XRootDStatus  status,
XrdSysMutexHelper lock 
)
private

On fatal error - unlocks the stream.

◆ OnIncoming()

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().

◆ OnMessageSent()

void XrdCl::Stream::OnMessageSent ( uint16_t  subStream,
Message msg,
uint32_t  bytesSent 
)

◆ OnReadTimeout()

bool XrdCl::Stream::OnReadTimeout ( uint16_t  subStream)

On read timeout.

◆ OnReadyToWrite()

std::pair< Message *, MsgHandler * > XrdCl::Stream::OnReadyToWrite ( uint16_t  subStream)

◆ OnWriteTimeout()

bool XrdCl::Stream::OnWriteTimeout ( uint16_t  subStream)

On write timeout.

◆ Query()

Status XrdCl::Stream::Query ( uint16_t  query,
AnyObject result 
)

Query the stream.

◆ RegisterEventHandler()

void XrdCl::Stream::RegisterEventHandler ( ChannelEventHandler handler)

Register channel event handler.

◆ RemoveEventHandler()

void XrdCl::Stream::RemoveEventHandler ( ChannelEventHandler handler)

Remove a channel event handler.

◆ RequestClose()

XRootDStatus XrdCl::Stream::RequestClose ( Message resp)
private

Send close after an open request timed out.

◆ Send()

XRootDStatus XrdCl::Stream::Send ( Message msg,
MsgHandler handler,
bool  stateful,
time_t  expires 
)

Queue the message for sending.

◆ SetChannelData()

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

Set the channel data.

References pChannelData.

◆ SetIncomingQueue()

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

Set the incoming queue.

References pIncomingQueue.

◆ SetJobManager()

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

Set job manager.

References pJobManager.

◆ SetOnDataConnectHandler()

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

Set the on-connect handler for data streams.

References pMutex, and pOnDataConnJob.

◆ SetPoller()

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

Set the poller.

References pPoller.

◆ SetTaskManager()

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

Set task manager.

References pTaskManager.

◆ SetTransport()

void XrdCl::Stream::SetTransport ( TransportHandler transport)
inline

Set the transport.

References pTransport.

◆ Tick()

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

◆ pAddresses

std::vector<XrdNetAddr> XrdCl::Stream::pAddresses
private

◆ pAddressType

Utils::AddressType XrdCl::Stream::pAddressType
private

◆ pBytesReceived

uint64_t XrdCl::Stream::pBytesReceived
private

◆ pBytesSent

uint64_t XrdCl::Stream::pBytesSent
private

◆ pChannelData

AnyObject* XrdCl::Stream::pChannelData
private

Referenced by SetChannelData().

◆ pChannelEvHandlers

ChannelHandlerList XrdCl::Stream::pChannelEvHandlers
private

◆ pConnectionCount

uint16_t XrdCl::Stream::pConnectionCount
private

◆ pConnectionDone

timeval XrdCl::Stream::pConnectionDone
private

◆ pConnectionInitTime

time_t XrdCl::Stream::pConnectionInitTime
private

◆ pConnectionRetry

uint16_t XrdCl::Stream::pConnectionRetry
private

◆ pConnectionStarted

timeval XrdCl::Stream::pConnectionStarted
private

◆ pConnectionWindow

uint16_t XrdCl::Stream::pConnectionWindow
private

◆ pIncomingQueue

InQueue* XrdCl::Stream::pIncomingQueue
private

Referenced by SetIncomingQueue().

◆ pJobManager

JobManager* XrdCl::Stream::pJobManager
private

Referenced by SetJobManager().

◆ pLastFatalError

XRootDStatus XrdCl::Stream::pLastFatalError
private

◆ pLastStreamError

uint32_t XrdCl::Stream::pLastStreamError
private

◆ pMutex

XrdSysRecMutex XrdCl::Stream::pMutex
private

Referenced by SetOnDataConnectHandler().

◆ pOnDataConnJob

std::shared_ptr<Job> XrdCl::Stream::pOnDataConnJob
private

Referenced by SetOnDataConnectHandler().

◆ pPoller

Poller* XrdCl::Stream::pPoller
private

Referenced by SetPoller().

◆ pPrefer

const URL XrdCl::Stream::pPrefer
private

◆ pSessionId

uint64_t XrdCl::Stream::pSessionId
private

◆ pStreamErrorWindow

uint16_t XrdCl::Stream::pStreamErrorWindow
private

◆ pStreamName

std::string XrdCl::Stream::pStreamName
private

Referenced by GetName().

◆ pSubStreams

SubStreamList XrdCl::Stream::pSubStreams
private

◆ pTaskManager

TaskManager* XrdCl::Stream::pTaskManager
private

Referenced by SetTaskManager().

◆ pTransport

TransportHandler* XrdCl::Stream::pTransport
private

Referenced by SetTransport().

◆ pUrl

const URL* XrdCl::Stream::pUrl
private

Referenced by GetURL().

◆ sSessCntGen

RAtomic_uint64_t XrdCl::Stream::sSessCntGen
staticprivate

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