XrdCl::TransportHandler Class Reference

Perform the handshake and the authentication for each physical stream. More...

#include <XrdClPostMasterInterfaces.hh>

Inheritance diagram for XrdCl::TransportHandler:
Inheritance graph
[legend]

List of all members.

Public Types

enum  StreamAction {
  NoAction = 0x0000, DigestMsg = 0x0001, AbortStream = 0x0002, CloseStream = 0x0004,
  ResumeStream = 0x0008, HoldStream = 0x0010, RequestClose = 0x0020
}
 

Stream actions that may be triggered by incoming control messages.

More...

Public Member Functions

virtual ~TransportHandler ()
virtual Status GetHeader (Message *message, int socket)=0
virtual Status GetBody (Message *message, int socket)=0
virtual void InitializeChannel (AnyObject &channelData)=0
 Initialize channel.
virtual void FinalizeChannel (AnyObject &channelData)=0
 Finalize channel.
virtual Status HandShake (HandShakeData *handShakeData, AnyObject &channelData)=0
 HandHake.
virtual bool IsStreamTTLElapsed (time_t inactiveTime, uint16_t streamId, AnyObject &channelData)=0
 Check if the stream should be disconnected.
virtual Status IsStreamBroken (time_t inactiveTime, uint16_t streamId, AnyObject &channelData)=0
virtual PathID Multiplex (Message *msg, AnyObject &channelData, PathID *hint=0)=0
virtual PathID MultiplexSubStream (Message *msg, uint16_t streamId, AnyObject &channelData, PathID *hint=0)=0
virtual uint16_t StreamNumber (AnyObject &channelData)=0
 Return a number of streams that should be created.
virtual uint16_t SubStreamNumber (AnyObject &channelData)=0
 Return a number of substreams per stream that should be created.
virtual void Disconnect (AnyObject &channelData, uint16_t streamId, uint16_t subStreamId)=0
 The stream has been disconnected, do the cleanups.
virtual Status Query (uint16_t query, AnyObject &result, AnyObject &channelData)=0
 Query the channel.
virtual uint32_t MessageReceived (Message *msg, uint16_t streamId, uint16_t subStream, AnyObject &channelData)=0
 Check if the message invokes a stream action.
virtual void MessageSent (Message *msg, uint16_t streamId, uint16_t subStream, uint32_t bytesSent, AnyObject &channelData)=0
 Notify the transport about a message having been sent.

Detailed Description

Perform the handshake and the authentication for each physical stream.


Member Enumeration Documentation

Stream actions that may be triggered by incoming control messages.

Enumerator:
NoAction 

No action.

DigestMsg 

Digest the incoming message so that it won't be passed to the user handlers

AbortStream 

Disconnect, abort all the on-going operations and mark the stream as permanently broken [not yet implemented]

CloseStream 

Disconnect and attempt reconnection later [not yet implemented]

ResumeStream 

Resume sending requests [not yet implemented]

HoldStream 

Stop sending requests [not yet implemented].

RequestClose 

Send a close request.


Constructor & Destructor Documentation

virtual XrdCl::TransportHandler::~TransportHandler (  )  [inline, virtual]

Member Function Documentation

virtual void XrdCl::TransportHandler::Disconnect ( AnyObject channelData,
uint16_t  streamId,
uint16_t  subStreamId 
) [pure virtual]

The stream has been disconnected, do the cleanups.

Implemented in XrdCl::XRootDTransport.

virtual void XrdCl::TransportHandler::FinalizeChannel ( AnyObject channelData  )  [pure virtual]

Finalize channel.

Implemented in XrdCl::XRootDTransport.

virtual Status XrdCl::TransportHandler::GetBody ( Message message,
int  socket 
) [pure virtual]

Read the message body from the socket, the socket is non-blocking, the method may be called multiple times - see GetHeader for details

Parameters:
message the message buffer containing the header
socket the socket
Returns:
stOK & suDone if the whole message has been processed stOK & suRetry if more data is needed stError on failure

Implemented in XrdCl::XRootDTransport.

virtual Status XrdCl::TransportHandler::GetHeader ( Message message,
int  socket 
) [pure virtual]

Read a message header from the socket, the socket is non-blocking, so if there is not enough data the function should return errRetry in which case it will be called again when more data arrives, with the data previously read stored in the message buffer

Parameters:
message the message buffer
socket the socket
Returns:
stOK & suDone if the whole message has been processed stOK & suRetry if more data is needed stError on failure

Implemented in XrdCl::XRootDTransport.

virtual Status XrdCl::TransportHandler::HandShake ( HandShakeData handShakeData,
AnyObject channelData 
) [pure virtual]

HandHake.

Implemented in XrdCl::XRootDTransport.

virtual void XrdCl::TransportHandler::InitializeChannel ( AnyObject channelData  )  [pure virtual]

Initialize channel.

Implemented in XrdCl::XRootDTransport.

virtual Status XrdCl::TransportHandler::IsStreamBroken ( time_t  inactiveTime,
uint16_t  streamId,
AnyObject channelData 
) [pure virtual]

Check the stream is broken - ie. TCP connection got broken and went undetected by the TCP stack

Implemented in XrdCl::XRootDTransport.

virtual bool XrdCl::TransportHandler::IsStreamTTLElapsed ( time_t  inactiveTime,
uint16_t  streamId,
AnyObject channelData 
) [pure virtual]

Check if the stream should be disconnected.

Implemented in XrdCl::XRootDTransport.

virtual uint32_t XrdCl::TransportHandler::MessageReceived ( Message msg,
uint16_t  streamId,
uint16_t  subStream,
AnyObject channelData 
) [pure virtual]

Check if the message invokes a stream action.

Implemented in XrdCl::XRootDTransport.

virtual void XrdCl::TransportHandler::MessageSent ( Message msg,
uint16_t  streamId,
uint16_t  subStream,
uint32_t  bytesSent,
AnyObject channelData 
) [pure virtual]

Notify the transport about a message having been sent.

Implemented in XrdCl::XRootDTransport.

virtual PathID XrdCl::TransportHandler::Multiplex ( Message msg,
AnyObject channelData,
PathID hint = 0 
) [pure virtual]

Return the ID for the up stream this message should be sent by and the down stream which the answer should be expected at. Modify the message itself if necessary. If hint is non-zero then the message should be modified such that the answer will be returned via the hinted stream.

Implemented in XrdCl::XRootDTransport.

virtual PathID XrdCl::TransportHandler::MultiplexSubStream ( Message msg,
uint16_t  streamId,
AnyObject channelData,
PathID hint = 0 
) [pure virtual]

Return the ID for the up substream this message should be sent by and the down substream which the answer should be expected at. Modify the message itself if necessary. If hint is non-zero then the message should be modified such that the answer will be returned via the hinted stream.

Implemented in XrdCl::XRootDTransport.

virtual Status XrdCl::TransportHandler::Query ( uint16_t  query,
AnyObject result,
AnyObject channelData 
) [pure virtual]

Query the channel.

Implemented in XrdCl::XRootDTransport.

virtual uint16_t XrdCl::TransportHandler::StreamNumber ( AnyObject channelData  )  [pure virtual]

Return a number of streams that should be created.

Implemented in XrdCl::XRootDTransport.

virtual uint16_t XrdCl::TransportHandler::SubStreamNumber ( AnyObject channelData  )  [pure virtual]

Return a number of substreams per stream that should be created.

Implemented in XrdCl::XRootDTransport.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 8 May 2020 for xrootd by  doxygen 1.6.1