XrdCl::XRootDTransport Class Reference

XRootD transport handler. More...

#include <XrdClXRootDTransport.hh>

Inheritance diagram for XrdCl::XRootDTransport:
Inheritance graph
[legend]
Collaboration diagram for XrdCl::XRootDTransport:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 XRootDTransport ()
 Constructor.
 ~XRootDTransport ()
 Destructor.
virtual Status GetHeader (Message *message, int socket)
virtual Status GetBody (Message *message, int socket)
virtual void InitializeChannel (AnyObject &channelData)
 Initialize channel.
virtual void FinalizeChannel (AnyObject &channelData)
 Finalize channel.
virtual Status HandShake (HandShakeData *handShakeData, AnyObject &channelData)
 HandShake.
virtual bool IsStreamTTLElapsed (time_t time, uint16_t streamId, AnyObject &channelData)
 Check if the stream should be disconnected.
virtual Status IsStreamBroken (time_t inactiveTime, uint16_t streamId, AnyObject &channelData)
virtual PathID Multiplex (Message *msg, AnyObject &channelData, PathID *hint=0)
virtual PathID MultiplexSubStream (Message *msg, uint16_t streamId, AnyObject &channelData, PathID *hint=0)
virtual uint16_t StreamNumber (AnyObject &channelData)
 Return a number of streams that should be created.
virtual uint16_t SubStreamNumber (AnyObject &channelData)
 Return a number of substreams per stream that should be created.
virtual bool NeedControlConnection ()
virtual void Disconnect (AnyObject &channelData, uint16_t streamId, uint16_t subStreamId)
 The stream has been disconnected, do the cleanups.
virtual Status Query (uint16_t query, AnyObject &result, AnyObject &channelData)
 Query the channel.
virtual uint32_t MessageReceived (Message *msg, uint16_t streamId, uint16_t subStream, AnyObject &channelData)
 Check if the message invokes a stream action.
virtual void MessageSent (Message *msg, uint16_t streamId, uint16_t subStream, uint32_t bytesSent, AnyObject &channelData)
 Notify the transport about a message having been sent.
virtual Status GetSignature (Message *toSign, Message *&sign, AnyObject &channelData)
 Get signature for given message.
Status ClassifyErrno (int error)
 Classify errno while reading/writing.

Static Public Member Functions

static Status MarshallRequest (Message *msg)
 Marshal the outgoing message.
static Status UnMarshallRequest (Message *msg)
static Status UnMarshallBody (Message *msg, uint16_t reqType)
 Unmarshall the body of the incoming message.
static void UnMarshallHeader (Message *msg)
 Unmarshall the header incoming message.
static void LogErrorResponse (const Message &msg)
 Log server error response.
static void SetDescription (Message *msg)
 Get the description of a message.

Private Member Functions

Status HandShakeMain (HandShakeData *handShakeData, AnyObject &channelData)
Status HandShakeParallel (HandShakeData *handShakeData, AnyObject &channelData)
MessageGenerateInitialHS (HandShakeData *hsData, XRootDChannelInfo *info)
MessageGenerateInitialHSProtocol (HandShakeData *hsData, XRootDChannelInfo *info)
Status ProcessServerHS (HandShakeData *hsData, XRootDChannelInfo *info)
Status ProcessProtocolResp (HandShakeData *hsData, XRootDChannelInfo *info)
MessageGenerateBind (HandShakeData *hsData, XRootDChannelInfo *info)
Status ProcessBindResp (HandShakeData *hsData, XRootDChannelInfo *info)
MessageGenerateLogIn (HandShakeData *hsData, XRootDChannelInfo *info)
Status ProcessLogInResp (HandShakeData *hsData, XRootDChannelInfo *info)
Status DoAuthentication (HandShakeData *hsData, XRootDChannelInfo *info)
Status GetCredentials (XrdSecCredentials *&credentials, HandShakeData *hsData, XRootDChannelInfo *info)
Status CleanUpAuthentication (XRootDChannelInfo *info)
Status CleanUpProtection (XRootDChannelInfo *info)
XrdSecGetProt_t GetAuthHandler ()
MessageGenerateEndSession (HandShakeData *hsData, XRootDChannelInfo *info)
Status ProcessEndSessionResp (HandShakeData *hsData, XRootDChannelInfo *info)

Static Private Member Functions

static std::string ServerFlagsToStr (uint32_t flags)
static std::string FileHandleToStr (const unsigned char handle[4])

Private Attributes

PluginUnloadHandler * pSecUnloadHandler

Friends

struct PluginUnloadHandler

Detailed Description

XRootD transport handler.


Constructor & Destructor Documentation

XrdCl::XRootDTransport::XRootDTransport (  ) 

Constructor.

XrdCl::XRootDTransport::~XRootDTransport (  ) 

Destructor.


Member Function Documentation

Status XrdCl::XRootDTransport::ClassifyErrno ( int  error  ) 

Classify errno while reading/writing.

Status XrdCl::XRootDTransport::CleanUpAuthentication ( XRootDChannelInfo *  info  )  [private]
Status XrdCl::XRootDTransport::CleanUpProtection ( XRootDChannelInfo *  info  )  [private]
virtual void XrdCl::XRootDTransport::Disconnect ( AnyObject channelData,
uint16_t  streamId,
uint16_t  subStreamId 
) [virtual]

The stream has been disconnected, do the cleanups.

Implements XrdCl::TransportHandler.

Status XrdCl::XRootDTransport::DoAuthentication ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
static std::string XrdCl::XRootDTransport::FileHandleToStr ( const unsigned char  handle[4]  )  [static, private]
virtual void XrdCl::XRootDTransport::FinalizeChannel ( AnyObject channelData  )  [virtual]

Finalize channel.

Implements XrdCl::TransportHandler.

Message* XrdCl::XRootDTransport::GenerateBind ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Message* XrdCl::XRootDTransport::GenerateEndSession ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Message* XrdCl::XRootDTransport::GenerateInitialHS ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Message* XrdCl::XRootDTransport::GenerateInitialHSProtocol ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Message* XrdCl::XRootDTransport::GenerateLogIn ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
XrdSecGetProt_t XrdCl::XRootDTransport::GetAuthHandler (  )  [private]
virtual Status XrdCl::XRootDTransport::GetBody ( Message message,
int  socket 
) [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

Implements XrdCl::TransportHandler.

Status XrdCl::XRootDTransport::GetCredentials ( XrdSecCredentials *&  credentials,
HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
virtual Status XrdCl::XRootDTransport::GetHeader ( Message message,
int  socket 
) [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

Implements XrdCl::TransportHandler.

virtual Status XrdCl::XRootDTransport::GetSignature ( Message toSign,
Message *&  sign,
AnyObject channelData 
) [virtual]

Get signature for given message.

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

HandShake.

Implements XrdCl::TransportHandler.

Status XrdCl::XRootDTransport::HandShakeMain ( HandShakeData handShakeData,
AnyObject channelData 
) [private]
Status XrdCl::XRootDTransport::HandShakeParallel ( HandShakeData handShakeData,
AnyObject channelData 
) [private]
virtual void XrdCl::XRootDTransport::InitializeChannel ( AnyObject channelData  )  [virtual]

Initialize channel.

Implements XrdCl::TransportHandler.

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

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

Implements XrdCl::TransportHandler.

virtual bool XrdCl::XRootDTransport::IsStreamTTLElapsed ( time_t  time,
uint16_t  streamId,
AnyObject channelData 
) [virtual]

Check if the stream should be disconnected.

Implements XrdCl::TransportHandler.

static void XrdCl::XRootDTransport::LogErrorResponse ( const Message msg  )  [static]

Log server error response.

static Status XrdCl::XRootDTransport::MarshallRequest ( Message msg  )  [static]

Marshal the outgoing message.

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

Check if the message invokes a stream action.

Implements XrdCl::TransportHandler.

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

Notify the transport about a message having been sent.

Implements XrdCl::TransportHandler.

virtual PathID XrdCl::XRootDTransport::Multiplex ( Message msg,
AnyObject channelData,
PathID hint = 0 
) [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.

Implements XrdCl::TransportHandler.

virtual PathID XrdCl::XRootDTransport::MultiplexSubStream ( Message msg,
uint16_t  streamId,
AnyObject channelData,
PathID hint = 0 
) [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.

Implements XrdCl::TransportHandler.

virtual bool XrdCl::XRootDTransport::NeedControlConnection (  )  [inline, virtual]

Return the information whether a control connection needs to be valid before establishing other connections

Status XrdCl::XRootDTransport::ProcessBindResp ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Status XrdCl::XRootDTransport::ProcessEndSessionResp ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Status XrdCl::XRootDTransport::ProcessLogInResp ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Status XrdCl::XRootDTransport::ProcessProtocolResp ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
Status XrdCl::XRootDTransport::ProcessServerHS ( HandShakeData hsData,
XRootDChannelInfo *  info 
) [private]
virtual Status XrdCl::XRootDTransport::Query ( uint16_t  query,
AnyObject result,
AnyObject channelData 
) [virtual]

Query the channel.

Implements XrdCl::TransportHandler.

static std::string XrdCl::XRootDTransport::ServerFlagsToStr ( uint32_t  flags  )  [static, private]
static void XrdCl::XRootDTransport::SetDescription ( Message msg  )  [static]

Get the description of a message.

virtual uint16_t XrdCl::XRootDTransport::StreamNumber ( AnyObject channelData  )  [virtual]

Return a number of streams that should be created.

Implements XrdCl::TransportHandler.

virtual uint16_t XrdCl::XRootDTransport::SubStreamNumber ( AnyObject channelData  )  [virtual]

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

Implements XrdCl::TransportHandler.

static Status XrdCl::XRootDTransport::UnMarshallBody ( Message msg,
uint16_t  reqType 
) [static]

Unmarshall the body of the incoming message.

static void XrdCl::XRootDTransport::UnMarshallHeader ( Message msg  )  [static]

Unmarshall the header incoming message.

static Status XrdCl::XRootDTransport::UnMarshallRequest ( Message msg  )  [static]

Unmarshall the request - sometimes the requests need to be rewritten, so we need to unmarshall them


Friends And Related Function Documentation

friend struct PluginUnloadHandler [friend]

Member Data Documentation

PluginUnloadHandler* XrdCl::XRootDTransport::pSecUnloadHandler [private]

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

Generated on 2 Aug 2019 for xrootd by  doxygen 1.6.1