19 #ifndef __XRD_CL_STREAM_HH__
20 #define __XRD_CL_STREAM_HH__
42 class TransportHandler;
150 void Tick( time_t now );
182 std::shared_ptr<Message> msg,
183 uint32_t bytesReceived );
188 std::pair<Message *, MsgHandler *>
196 uint32_t bytesSent );
283 std::vector<XrdNetAddr> &addresses )
285 auto itr = addresses.begin();
286 for( ; itr != addresses.end() ; ++itr )
288 if( itr->Same( &addr ) )
return true;
308 std::shared_ptr<Message>
msg;
388 #endif // __XRD_CL_STREAM_HH__
A synchronized queue.
Definition: XrdClJobManager.hh:50
Definition: XrdClStream.hh:314
void OnError(uint16_t subStream, XRootDStatus status)
On error.
Definition: XrdClAnyObject.hh:32
uint32_t pLastStreamError
Definition: XrdClStream.hh:360
void OnConnect(uint16_t subStream)
Call back when a message has been reconstructed.
void OnFatalError(uint16_t subStream, XRootDStatus status, XrdSysMutexHelper &lock)
On fatal error - unlocks the stream.
std::vector< XrdNetAddr > pAddresses
Definition: XrdClStream.hh:368
void OnReadTimeout(uint16_t subStream, bool &isBroken)
On read timeout.
Definition: XrdSysPthread.hh:241
Interface for socket pollers.
Definition: XrdClPoller.hh:86
Definition: XrdClStream.hh:297
std::shared_ptr< Message > msg
Definition: XrdClStream.hh:308
void DisableIfEmpty(uint16_t subStream)
Disables respective uplink if empty.
void OnWriteTimeout(uint16_t subStream)
On write timeout.
The message representation used throughout the system.
Definition: XrdClMessage.hh:29
void OnMessageSent(uint16_t subStream, Message *msg, uint32_t bytesSent)
timeval pConnectionDone
Definition: XrdClStream.hh:377
Definition: XrdClPostMasterInterfaces.hh:269
InQueue * pIncomingQueue
Definition: XrdClStream.hh:358
In the process of being connected.
Definition: XrdClStream.hh:59
void SetIncomingQueue(InQueue *incomingQueue)
Set the incoming queue.
Definition: XrdClStream.hh:105
ChannelHandlerList pChannelEvHandlers
Definition: XrdClStream.hh:370
void SetPoller(Poller *poller)
Set the poller.
Definition: XrdClStream.hh:97
void MonitorDisconnection(XRootDStatus status)
Inform the monitoring about disconnection.
Message handler.
Definition: XrdClPostMasterInterfaces.hh:50
static bool HasNetAddr(const XrdNetAddr &addr, std::vector< XrdNetAddr > &addresses)
Check if addresses contains given address.
Definition: XrdClStream.hh:282
A helper for handling channel event handlers.
Definition: XrdClChannelHandlerList.hh:33
std::vector< SubStreamData * > SubStreamList
Definition: XrdClStream.hh:345
void ForceError(XRootDStatus status)
Force error.
virtual void Run(void *)
The job logic.
Definition: XrdClStream.hh:319
std::pair< Message *, MsgHandler * > OnReadyToWrite(uint16_t subStream)
const URL pPrefer
Definition: XrdClStream.hh:351
Definition: XrdNetAddr.hh:41
InQueue & pQueue
Definition: XrdClStream.hh:307
void SetTaskManager(TaskManager *taskManager)
Set task manager.
Definition: XrdClStream.hh:121
virtual void Process()
Definition: XrdClPostMasterInterfaces.hh:125
uint64_t pSessionId
Definition: XrdClStream.hh:371
uint16_t pConnectionWindow
Definition: XrdClStream.hh:366
void SetTransport(TransportHandler *transport)
Set the transport.
Definition: XrdClStream.hh:89
AddressType
Address type.
Definition: XrdClUtils.hh:97
uint16_t pConnectionCount
Definition: XrdClStream.hh:363
Broken.
Definition: XrdClStream.hh:60
AnyObject * pChannelData
Definition: XrdClStream.hh:359
TransportHandler * pTransport
Definition: XrdClStream.hh:353
TaskManager * pTaskManager
Definition: XrdClStream.hh:355
XRootDStatus Initialize()
Initializer.
uint16_t pConnectionRetry
Definition: XrdClStream.hh:364
timeval pConnectionStarted
Definition: XrdClStream.hh:376
XrdSysRecMutex pMutex
Definition: XrdClStream.hh:357
Perform the handshake and the authentication for each physical stream.
Definition: XrdClPostMasterInterfaces.hh:289
bool AddMessage(std::shared_ptr< Message > msg)
Add a fully reconstructed message to the queue.
virtual ~HandleIncMsgJob()
Definition: XrdClStream.hh:318
JobManager * pJobManager
Definition: XrdClStream.hh:356
Request status.
Definition: XrdClXRootDResponses.hh:218
void SetJobManager(JobManager *jobManager)
Set job manager.
Definition: XrdClStream.hh:129
Channel event handler.
Definition: XrdClPostMasterInterfaces.hh:209
Poller * pPoller
Definition: XrdClStream.hh:354
uint64_t pBytesSent
Definition: XrdClStream.hh:378
A synchronize queue for incoming data.
Definition: XrdClInQueue.hh:36
Utils::AddressType pAddressType
Definition: XrdClStream.hh:369
void OnConnectError(uint16_t subStream, XRootDStatus status)
On connect error.
XRootDStatus pLastFatalError
Definition: XrdClStream.hh:361
XRootDStatus Send(Message *msg, MsgHandler *handler, bool stateful, time_t expires)
Queue the message for sending.
void Disconnect(bool force=false)
Disconnect the stream.
XRootDStatus EnableLink(PathID &path)
uint16_t InspectStatusRsp(uint16_t stream, MsgHandler *&incHandler)
MsgHandler * InstallIncHandler(std::shared_ptr< Message > &msg, uint16_t stream)
Connected.
Definition: XrdClStream.hh:58
void ForceConnect()
Force connection.
std::shared_ptr< Job > pOnDataConnJob
Definition: XrdClStream.hh:384
void SetChannelData(AnyObject *channelData)
Set the channel data.
Definition: XrdClStream.hh:113
uint64_t pBytesReceived
Definition: XrdClStream.hh:379
SubStreamList pSubStreams
Definition: XrdClStream.hh:367
URL representation.
Definition: XrdClURL.hh:30
virtual void Run(void *)
The job logic.
Definition: XrdClStream.hh:302
MsgHandler * pHandler
Definition: XrdClStream.hh:325
std::string pStreamName
Definition: XrdClStream.hh:352
void RegisterEventHandler(ChannelEventHandler *handler)
Register channel event handler.
virtual ~QueueIncMsgJob()
Definition: XrdClStream.hh:301
void RemoveEventHandler(ChannelEventHandler *handler)
Remove a channel event handler.
Stream.
Definition: XrdClStream.hh:49
const URL * GetURL() const
Get the URL.
Definition: XrdClStream.hh:155
const std::string & GetName() const
Return stream name.
Definition: XrdClStream.hh:168
QueueIncMsgJob(InQueue &queue, std::shared_ptr< Message > msg)
Definition: XrdClStream.hh:300
bool CanCollapse(const URL &url)
Interface for a job to be run by the job manager.
Definition: XrdClJobManager.hh:33
const URL * pUrl
Definition: XrdClStream.hh:350
Stream(const URL *url, const URL &prefer=URL())
Constructor.
HandleIncMsgJob(MsgHandler *handler)
Definition: XrdClStream.hh:317
time_t pConnectionInitTime
Definition: XrdClStream.hh:365
void OnIncoming(uint16_t subStream, std::shared_ptr< Message > msg, uint32_t bytesReceived)
Call back when a message has been reconstructed.
XRootDStatus RequestClose(Message &resp)
Send close after an open request timed out.
void SetOnDataConnectHandler(std::shared_ptr< Job > &onConnJob)
Set the on-connect handler for data streams.
Definition: XrdClStream.hh:261
Definition: XrdClTaskManager.hh:75
Definition: XrdSysPthread.hh:262
static bool IsPartial(Message &msg)
Check if message is a partial response.
StreamStatus
Status of the stream.
Definition: XrdClStream.hh:55
uint16_t pStreamErrorWindow
Definition: XrdClStream.hh:362
Not connected.
Definition: XrdClStream.hh:57