#include <XrdClStream.hh>
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. | |
~Stream () | |
Destructor. | |
Status | Initialize () |
Initializer. | |
Status | Send (Message *msg, OutgoingMsgHandler *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. | |
Status | EnableLink (PathID &path) |
void | Disconnect (bool force=false) |
Disconnect the stream. | |
void | Tick (time_t now) |
const URL * | GetURL () const |
Get the URL. | |
uint16_t | GetStreamNumber () const |
Get the stream number. | |
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, Message *msg, uint32_t bytesReceived) |
Call back when a message has been reconstructed. | |
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. | |
void | OnConnectError (uint16_t subStream, Status status) |
On connect error. | |
void | OnError (uint16_t subStream, Status status) |
On error. | |
void | ForceError (Status status) |
Force error. | |
void | OnReadTimeout (uint16_t subStream, bool &isBroken) |
On read timeout. | |
void | OnWriteTimeout (uint16_t subStream) |
On write timeout. | |
void | RegisterEventHandler (ChannelEventHandler *handler) |
Register channel event handler. | |
void | RemoveEventHandler (ChannelEventHandler *handler) |
Remove a channel event handler. | |
std::pair< IncomingMsgHandler *, bool > | InstallIncHandler (Message *msg, uint16_t stream) |
void | SetOnConnectHandler (Job *onConnJob) |
Set the on-connect handler for data streams. | |
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. | |
void | MonitorDisconnection (Status status) |
Inform the monitoring about disconnection. | |
Status | RequestClose (Message *resp) |
Send close after an open request timed out. | |
Private Attributes | |
const URL * | pUrl |
uint16_t | pStreamNum |
std::string | pStreamName |
TransportHandler * | pTransport |
Poller * | pPoller |
TaskManager * | pTaskManager |
JobManager * | pJobManager |
XrdSysRecMutex | pMutex |
InQueue * | pIncomingQueue |
AnyObject * | pChannelData |
uint32_t | pLastStreamError |
Status | 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 |
QueueIncMsgJob * | pQueueIncMsgJob |
timeval | pConnectionStarted |
timeval | pConnectionDone |
uint64_t | pBytesSent |
uint64_t | pBytesReceived |
Job * | pOnConnJob |
typedef std::vector<SubStreamData*> XrdCl::Stream::SubStreamList [private] |
Status of the stream.
XrdCl::Stream::Stream | ( | const URL * | url, | |
uint16_t | streamNum | |||
) |
Constructor.
XrdCl::Stream::~Stream | ( | ) |
Destructor.
void XrdCl::Stream::DisableIfEmpty | ( | uint16_t | subStream | ) |
Disables respective uplink if empty.
void XrdCl::Stream::Disconnect | ( | bool | force = false |
) |
Disconnect the stream.
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 | ( | Status | status | ) |
Force error.
const std::string& XrdCl::Stream::GetName | ( | ) | const [inline] |
Return stream name.
References pStreamName.
uint16_t XrdCl::Stream::GetStreamNumber | ( | ) | const [inline] |
Get the stream number.
References pStreamNum.
Status XrdCl::Stream::Initialize | ( | ) |
Initializer.
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
msg | message header | |
stream | stream concerned |
void XrdCl::Stream::MonitorDisconnection | ( | Status | 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, | |
Status | status | |||
) |
On connect error.
void XrdCl::Stream::OnError | ( | uint16_t | subStream, | |
Status | status | |||
) |
On error.
void XrdCl::Stream::OnFatalError | ( | uint16_t | subStream, | |
Status | status, | |||
XrdSysMutexHelper & | lock | |||
) | [private] |
On fatal error - unlocks the stream.
void XrdCl::Stream::OnIncoming | ( | uint16_t | subStream, | |
Message * | msg, | |||
uint32_t | bytesReceived | |||
) |
Call back when a message has been reconstructed.
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 *, OutgoingMsgHandler *> 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.
Send close after an open request timed out.
Status XrdCl::Stream::Send | ( | Message * | msg, | |
OutgoingMsgHandler * | 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, and pQueueIncMsgJob.
void XrdCl::Stream::SetJobManager | ( | JobManager * | jobManager | ) | [inline] |
Set job manager.
References pJobManager.
void XrdCl::Stream::SetOnConnectHandler | ( | Job * | onConnJob | ) | [inline] |
Set the on-connect handler for data streams.
References pOnConnJob.
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
std::vector<XrdNetAddr> XrdCl::Stream::pAddresses [private] |
uint64_t XrdCl::Stream::pBytesReceived [private] |
uint64_t XrdCl::Stream::pBytesSent [private] |
AnyObject* XrdCl::Stream::pChannelData [private] |
Referenced by SetChannelData().
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().
Status XrdCl::Stream::pLastFatalError [private] |
uint32_t XrdCl::Stream::pLastStreamError [private] |
XrdSysRecMutex XrdCl::Stream::pMutex [private] |
Job* XrdCl::Stream::pOnConnJob [private] |
Referenced by SetOnConnectHandler().
Poller* XrdCl::Stream::pPoller [private] |
Referenced by SetPoller().
QueueIncMsgJob* XrdCl::Stream::pQueueIncMsgJob [private] |
Referenced by SetIncomingQueue().
uint64_t XrdCl::Stream::pSessionId [private] |
uint16_t XrdCl::Stream::pStreamErrorWindow [private] |
std::string XrdCl::Stream::pStreamName [private] |
Referenced by GetName().
uint16_t XrdCl::Stream::pStreamNum [private] |
Referenced by GetStreamNumber().
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().