xrootd
Classes | Public Types | Public Member Functions | Private Types | 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, uint16_t streamNum)
 Constructor. More...
 
 ~Stream ()
 Destructor. More...
 
Status Initialize ()
 Initializer. More...
 
Status Send (Message *msg, OutgoingMsgHandler *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...
 
Status EnableLink (PathID &path)
 
void Disconnect (bool force=false)
 Disconnect the stream. More...
 
void Tick (time_t now)
 
const URLGetURL () const
 Get the URL. More...
 
uint16_t GetStreamNumber () const
 Get the stream number. More...
 
void ForceConnect ()
 Force connection. More...
 
const std::string & GetName () const
 Return stream name. More...
 
void OnIncoming (uint16_t subStream, Message *msg, uint32_t bytesReceived)
 Call back when a message has been reconstructed. More...
 
std::pair< Message
*, OutgoingMsgHandler * > 
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, Status status)
 On connect error. More...
 
void OnError (uint16_t subStream, Status status)
 On error. More...
 
void OnReadTimeout (uint16_t subStream)
 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...
 
std::pair< IncomingMsgHandler
*, bool > 
InstallIncHandler (Message *msg, uint16_t stream)
 

Private Types

typedef std::vector
< SubStreamData * > 
SubStreamList
 

Private Member Functions

void OnFatalError (uint16_t subStream, Status status, XrdSysMutexHelper &lock)
 On fatal error - unlocks the stream. More...
 
void MonitorDisconnection (Status status)
 Inform the monitoring about disconnection. More...
 

Private Attributes

const URLpUrl
 
uint16_t pStreamNum
 
std::string pStreamName
 
TransportHandlerpTransport
 
PollerpPoller
 
TaskManagerpTaskManager
 
JobManagerpJobManager
 
XrdSysRecMutex pMutex
 
InQueuepIncomingQueue
 
AnyObjectpChannelData
 
uint16_t pLastStreamError
 
uint16_t pStreamErrorWindow
 
uint16_t pConnectionCount
 
uint16_t pConnectionRetry
 
time_t pConnectionInitTime
 
uint16_t pConnectionWindow
 
SubStreamList pSubStreams
 
std::vector< sockaddr_in > pAddresses
 
ChannelHandlerList pChannelEvHandlers
 
uint64_t pSessionId
 
QueueIncMsgJobpQueueIncMsgJob
 
timeval pConnectionStarted
 
timeval pConnectionDone
 
uint64_t pBytesSent
 
uint64_t pBytesReceived
 

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,
uint16_t  streamNum 
)
XrdCl::Stream::~Stream ( )

Member Function Documentation

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

Disconnect the stream.

Referenced by ~Stream().

Status XrdCl::Stream::EnableLink ( PathID path)
void XrdCl::Stream::ForceConnect ( )
const std::string& XrdCl::Stream::GetName ( ) const
inline

Return stream name.

References pStreamName.

uint16_t XrdCl::Stream::GetStreamNumber ( ) const
inline
const URL* XrdCl::Stream::GetURL ( ) const
inline
Status XrdCl::Stream::Initialize ( )
std::pair< IncomingMsgHandler *, bool > XrdCl::Stream::InstallIncHandler ( 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

References XrdCl::InMessageHelper::action, XrdCl::InMessageHelper::expires, XrdCl::InQueue::GetHandlerForMessage(), XrdCl::InMessageHelper::handler, pIncomingQueue, pSubStreams, XrdCl::IncomingMsgHandler::Raw, PC3::stream(), and XrdCl::IncomingMsgHandler::Take.

Referenced by XrdCl::AsyncSocketHandler::OnRead().

void XrdCl::Stream::MonitorDisconnection ( Status  status)
private
void XrdCl::Stream::OnConnect ( uint16_t  subStream)
void XrdCl::Stream::OnConnectError ( uint16_t  subStream,
Status  status 
)
void XrdCl::Stream::OnError ( uint16_t  subStream,
Status  status 
)
void XrdCl::Stream::OnFatalError ( uint16_t  subStream,
Status  status,
XrdSysMutexHelper lock 
)
private
void XrdCl::Stream::OnIncoming ( uint16_t  subStream,
Message msg,
uint32_t  bytesReceived 
)
void XrdCl::Stream::OnMessageSent ( uint16_t  subStream,
Message msg,
uint32_t  bytesSent 
)
void XrdCl::Stream::OnReadTimeout ( uint16_t  subStream)

On read timeout.

Referenced by XrdCl::AsyncSocketHandler::OnReadTimeout().

std::pair< Message *, OutgoingMsgHandler * > XrdCl::Stream::OnReadyToWrite ( uint16_t  subStream)
void XrdCl::Stream::OnWriteTimeout ( uint16_t  subStream)

On write timeout.

Referenced by XrdCl::AsyncSocketHandler::OnWriteTimeout().

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

Register channel event handler.

References XrdCl::ChannelHandlerList::AddHandler(), and pChannelEvHandlers.

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

Remove a channel event handler.

References pChannelEvHandlers, and XrdCl::ChannelHandlerList::RemoveHandler().

Status XrdCl::Stream::Send ( Message msg,
OutgoingMsgHandler handler,
bool  stateful,
time_t  expires 
)
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, and pQueueIncMsgJob.

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

Set job manager.

References pJobManager.

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)

Member Data Documentation

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

Referenced by EnableLink(), and OnConnectError().

uint64_t XrdCl::Stream::pBytesReceived
private
uint64_t XrdCl::Stream::pBytesSent
private
AnyObject* XrdCl::Stream::pChannelData
private
ChannelHandlerList XrdCl::Stream::pChannelEvHandlers
private
uint16_t XrdCl::Stream::pConnectionCount
private
timeval XrdCl::Stream::pConnectionDone
private
time_t XrdCl::Stream::pConnectionInitTime
private

Referenced by EnableLink(), and OnConnectError().

uint16_t XrdCl::Stream::pConnectionRetry
private

Referenced by OnConnectError(), and Stream().

timeval XrdCl::Stream::pConnectionStarted
private

Referenced by EnableLink(), OnConnect(), and Stream().

uint16_t XrdCl::Stream::pConnectionWindow
private
InQueue* XrdCl::Stream::pIncomingQueue
private
JobManager* XrdCl::Stream::pJobManager
private

Referenced by OnIncoming(), and SetJobManager().

uint16_t XrdCl::Stream::pLastStreamError
private

Referenced by EnableLink(), OnConnect(), and OnFatalError().

XrdSysRecMutex XrdCl::Stream::pMutex
private
Poller* XrdCl::Stream::pPoller
private

Referenced by Initialize(), OnConnect(), and SetPoller().

QueueIncMsgJob* XrdCl::Stream::pQueueIncMsgJob
private
uint64_t XrdCl::Stream::pSessionId
private

Referenced by OnConnect(), OnIncoming(), and Send().

uint16_t XrdCl::Stream::pStreamErrorWindow
private

Referenced by EnableLink(), and Stream().

std::string XrdCl::Stream::pStreamName
private
uint16_t XrdCl::Stream::pStreamNum
private
SubStreamList XrdCl::Stream::pSubStreams
private
TaskManager* XrdCl::Stream::pTaskManager
private

Referenced by OnConnectError(), and SetTaskManager().

TransportHandler* XrdCl::Stream::pTransport
private
const URL* XrdCl::Stream::pUrl
private

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