XrdCl::Socket Class Reference

A network socket. More...

#include <XrdClSocket.hh>

Collaboration diagram for XrdCl::Socket:
Collaboration graph
[legend]

List of all members.

Public Types

enum  SocketStatus { Disconnected = 1, Connected = 2, Connecting = 3 }
 

Status of the socket.

More...

Public Member Functions

 Socket (int socket=-1, SocketStatus status=Disconnected)
virtual ~Socket ()
 Desctuctor.
Status Initialize (int family=AF_INET)
 Initialize the socket.
Status SetFlags (int flags)
 Set the socket flags (man fcntl).
Status GetFlags (int &flags)
 Get the socket flags (man fcntl).
Status GetSockOpt (int level, int optname, void *optval, socklen_t *optlen)
 Get socket options.
Status SetSockOpt (int level, int optname, const void *optval, socklen_t optlen)
 Set socket options.
Status Connect (const std::string &host, uint16_t port, uint16_t timout=10)
Status ConnectToAddress (const XrdNetAddr &addr, uint16_t timout=10)
void Close ()
 Disconnect.
SocketStatus GetStatus () const
 Get the socket status.
void SetStatus (SocketStatus status)
 Set socket status - do not use unless you know what you're doing.
Status ReadRaw (void *buffer, uint32_t size, int32_t timeout, uint32_t &bytesRead)
Status WriteRaw (void *buffer, uint32_t size, int32_t timeout, uint32_t &bytesWritten)
ssize_t Send (void *buffer, uint32_t size)
ssize_t WriteV (iovec *iov, int iovcnt)
int GetFD ()
 Get the file descriptor.
std::string GetSockName () const
 Get the name of the socket.
std::string GetPeerName () const
 Get the name of the remote peer.
std::string GetName () const
 Get the string representation of the socket.
const XrdNetAddrGetServerAddress () const
 Get the server address.
void SetChannelID (AnyObject *channelID)
const AnyObjectGetChannelID () const

Private Member Functions

Status Poll (bool readyForReading, bool readyForWriting, int32_t timeout)

Private Attributes

int pSocket
SocketStatus pStatus
XrdNetAddr pServerAddr
std::string pSockName
std::string pPeerName
std::string pName
int pProtocolFamily
AnyObjectpChannelID

Detailed Description

A network socket.


Member Enumeration Documentation

Status of the socket.

Enumerator:
Disconnected 

The socket is disconnected.

Connected 

The socket is connected.

Connecting 

The connection process is in progress.


Constructor & Destructor Documentation

XrdCl::Socket::Socket ( int  socket = -1,
SocketStatus  status = Disconnected 
) [inline]

Constructor

Parameters:
socket already connected socket if available, -1 otherwise
status status of a socket if available
virtual XrdCl::Socket::~Socket (  )  [inline, virtual]

Desctuctor.

References Close().


Member Function Documentation

void XrdCl::Socket::Close (  ) 

Disconnect.

Referenced by ~Socket().

Status XrdCl::Socket::Connect ( const std::string &  host,
uint16_t  port,
uint16_t  timout = 10 
)

Connect to the given host name

Parameters:
host name of the host to connect to
port port to connect to
timout timeout in seconds, 0 for no timeout handling (may be used for non blocking IO)
Status XrdCl::Socket::ConnectToAddress ( const XrdNetAddr addr,
uint16_t  timout = 10 
)

Connect to the given host address

Parameters:
addr address of the host to connect to
timout timeout in seconds, 0 for no timeout handling (may be used for non blocking IO)
const AnyObject* XrdCl::Socket::GetChannelID (  )  const [inline]

Get Channel ID (an object that allows to identify all sockets corresponding to the same channel)

References pChannelID.

int XrdCl::Socket::GetFD (  )  [inline]

Get the file descriptor.

References pSocket.

Status XrdCl::Socket::GetFlags ( int &  flags  ) 

Get the socket flags (man fcntl).

std::string XrdCl::Socket::GetName (  )  const

Get the string representation of the socket.

std::string XrdCl::Socket::GetPeerName (  )  const

Get the name of the remote peer.

const XrdNetAddr& XrdCl::Socket::GetServerAddress (  )  const [inline]

Get the server address.

References pServerAddr.

std::string XrdCl::Socket::GetSockName (  )  const

Get the name of the socket.

Status XrdCl::Socket::GetSockOpt ( int  level,
int  optname,
void *  optval,
socklen_t *  optlen 
)

Get socket options.

SocketStatus XrdCl::Socket::GetStatus (  )  const [inline]

Get the socket status.

References pStatus.

Status XrdCl::Socket::Initialize ( int  family = AF_INET  ) 

Initialize the socket.

Status XrdCl::Socket::Poll ( bool  readyForReading,
bool  readyForWriting,
int32_t  timeout 
) [private]

Poll the socket to see whether it is ready for IO

Parameters:
readyForReading poll for readiness to read
readyForWriting poll for readiness to write
timeout timeout in seconds, -1 to wait indefinitely
Returns:
stOK - ready for IO errSocketDisconnected - on disconnection errSocketError - on socket error errSocketTimeout - on socket timeout errInvalidOp - when called on a non connected socket
Status XrdCl::Socket::ReadRaw ( void *  buffer,
uint32_t  size,
int32_t  timeout,
uint32_t &  bytesRead 
)

Read raw bytes from the socket

Parameters:
buffer data to be sent
size size of the data buffer
timeout timout value in seconds, -1 to wait indefinitely
bytesRead the amount of data actually read
ssize_t XrdCl::Socket::Send ( void *  buffer,
uint32_t  size 
)

Portable wrapper around SIGPIPE free send

Parameters:
buffer : data to be written
size : size of the data buffer
Returns:
: the amount of data actually written
void XrdCl::Socket::SetChannelID ( AnyObject channelID  )  [inline]

Set Channel ID (an object that allows to identify all sockets corresponding to the same channel)

References pChannelID.

Status XrdCl::Socket::SetFlags ( int  flags  ) 

Set the socket flags (man fcntl).

Status XrdCl::Socket::SetSockOpt ( int  level,
int  optname,
const void *  optval,
socklen_t  optlen 
)

Set socket options.

void XrdCl::Socket::SetStatus ( SocketStatus  status  )  [inline]

Set socket status - do not use unless you know what you're doing.

References pStatus.

Status XrdCl::Socket::WriteRaw ( void *  buffer,
uint32_t  size,
int32_t  timeout,
uint32_t &  bytesWritten 
)

Write raw bytes to the socket

Parameters:
buffer data to be written
size size of the data buffer
timeout timeout value in seconds, -1 to wait indefinitely
bytesWritten the amount of data actually written
ssize_t XrdCl::Socket::WriteV ( iovec *  iov,
int  iovcnt 
)

Wrapper around writev

Parameters:
iov : buffers to be written
iovcnt : number of buffers
Returns:
: the amount of data actually written

Member Data Documentation

Referenced by GetChannelID(), and SetChannelID().

std::string XrdCl::Socket::pName [mutable, private]
std::string XrdCl::Socket::pPeerName [mutable, private]

Referenced by GetServerAddress().

int XrdCl::Socket::pSocket [private]

Referenced by GetFD().

std::string XrdCl::Socket::pSockName [mutable, private]

Referenced by GetStatus(), and SetStatus().


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

Generated on 5 Feb 2020 for xrootd by  doxygen 1.6.1