xrootd
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
XrdCl::Socket Class Reference

A network socket. More...

#include <XrdClSocket.hh>

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

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. More...
 
Status Initialize ()
 Initialize the socket. More...
 
Status SetFlags (int flags)
 Set the socket flags (man fcntl) More...
 
Status GetFlags (int &flags)
 Get the socket flags (man fcntl) More...
 
Status GetSockOpt (int level, int optname, void *optval, socklen_t *optlen)
 Get socket options. More...
 
Status SetSockOpt (int level, int optname, const void *optval, socklen_t optlen)
 Set socket options. More...
 
Status Connect (const std::string &host, uint16_t port, uint16_t timout=10)
 
Status ConnectToAddress (const sockaddr_in &addr, uint16_t timout=10)
 
void Close ()
 Disconnect. More...
 
SocketStatus GetStatus () const
 Get the socket status. More...
 
void SetStatus (SocketStatus status)
 Set socket status - do not use unless you know what you're doing. More...
 
Status ReadRaw (void *buffer, uint32_t size, int32_t timeout, uint32_t &bytesRead)
 Read raw bytes from the socket. More...
 
Status WriteRaw (void *buffer, uint32_t size, int32_t timeout, uint32_t &bytesWritten)
 
ssize_t Send (void *buffer, uint32_t size)
 
int GetFD ()
 Get the file descriptor. More...
 
std::string GetSockName () const
 Get the name of the socket. More...
 
std::string GetPeerName () const
 Get the name of the remote peer. More...
 
std::string GetName () const
 Get the string representation of the socket. More...
 
const sockaddr_in * GetServerAddress () const
 Get the server address. More...
 

Private Member Functions

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

Private Attributes

int pSocket
 
SocketStatus pStatus
 
sockaddr_in * pServerAddr
 
std::string pSockName
 
std::string pPeerName
 
std::string pName
 

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
socketalready connected socket if available, -1 otherwise
statusstatus of a socket if available
virtual XrdCl::Socket::~Socket ( )
inlinevirtual

Desctuctor.

References Close().

Member Function Documentation

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

Connect to the given host name

Parameters
hostname of the host to connect to
portport to connect to
timouttimeout in seconds, 0 for no timeout handling (may be used for non blocking IO)

References Connected, Connecting, ConnectToAddress(), XrdCl::errInvalidAddr, XrdCl::errInvalidOp, XrdSysDNS::getHostAddr(), pSocket, pStatus, and XrdCl::stError.

Status XrdCl::Socket::ConnectToAddress ( const sockaddr_in &  addr,
uint16_t  timout = 10 
)

Connect to the given host address

Parameters
addraddress of the host to connect to
timouttimeout in seconds, 0 for no timeout handling (may be used for non blocking IO)

References Close(), XrdCl::Status::code, XrdNetConnect::Connect(), Connected, Connecting, XrdCl::errInvalidOp, XrdCl::Status::errNo, XrdCl::errSocketError, XrdCl::errSocketTimeout, pServerAddr, pSocket, pStatus, and XrdCl::stError.

Referenced by XrdCl::AsyncSocketHandler::Connect(), and Connect().

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

Get the socket flags (man fcntl)

References XrdCl::errInvalidOp, XrdCl::errSocketError, fcntl(), pSocket, and XrdCl::stError.

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

Get the name of the remote peer.

References Connected, XrdSysDNS::IPFormat(), pPeerName, pSocket, and pStatus.

Referenced by GetName().

const sockaddr_in* XrdCl::Socket::GetServerAddress ( ) const
inline

Get the server address.

References pServerAddr.

Referenced by XrdCl::AsyncSocketHandler::OnConnectionReturn().

std::string XrdCl::Socket::GetSockName ( ) const
Status XrdCl::Socket::GetSockOpt ( int  level,
int  optname,
void *  optval,
socklen_t *  optlen 
)
SocketStatus XrdCl::Socket::GetStatus ( ) const
inline
Status XrdCl::Socket::Initialize ( )
Status XrdCl::Socket::Poll ( bool  readyForReading,
bool  readyForWriting,
int32_t  timeout 
)
private

Poll the socket to see whether it is ready for IO

Parameters
readyForReadingpoll for readiness to read
readyForWritingpoll for readiness to write
timeouttimeout 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

References Connected, XrdCl::errInvalidOp, XrdCl::errPoll, XrdCl::errSocketDisconnected, XrdCl::errSocketError, XrdCl::errSocketTimeout, pSocket, pStatus, XrdCl::stError, and XrdCl::stOK.

Referenced by ReadRaw(), and WriteRaw().

Status XrdCl::Socket::ReadRaw ( void *  buffer,
uint32_t  size,
int32_t  timeout,
uint32_t &  bytesRead 
)

Read raw bytes from the socket.

Read raw bytes from the socket

Parameters
bufferdata to be sent
sizesize of the data buffer
timeouttimout value in seconds, -1 to wait indefinitely
bytesReadthe amount of data actually read

References Close(), Connected, XrdCl::errInvalidOp, XrdCl::errSocketDisconnected, XrdCl::errSocketError, XrdCl::errSocketTimeout, Poll(), pSocket, pStatus, read(), XrdCl::Status::status, XrdCl::stError, and XrdCl::stOK.

ssize_t XrdCl::Socket::Send ( void *  buffer,
uint32_t  size 
)

Portable wrapper around SIGPIPE free send

Parameters
bufferdata to be written
sizesize of the data buffer
bytesWrittenthe amount of data actually written

References pSocket, and write().

Referenced by XrdCl::AsyncSocketHandler::WriteCurrentMessage().

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

Set the socket flags (man fcntl)

References XrdCl::errInvalidOp, XrdCl::errSocketError, fcntl(), pSocket, and XrdCl::stError.

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

Set socket options.

References XrdCl::errInvalidOp, XrdCl::errSocketOptError, pSocket, and XrdCl::stError.

Referenced by Initialize().

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

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

References pStatus.

Referenced by XrdCl::AsyncSocketHandler::OnConnectionReturn().

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

Write raw bytes to the socket

Parameters
bufferdata to be written
sizesize of the data buffer
timeouttimeout value in seconds, -1 to wait indefinitely
bytesWrittenthe amount of data actually written

References Close(), Connected, XrdCl::errInvalidOp, XrdCl::errSocketError, XrdCl::errSocketTimeout, Poll(), pSocket, pStatus, XrdCl::Status::status, XrdCl::stError, XrdCl::stOK, and write().

Member Data Documentation

std::string XrdCl::Socket::pName
mutableprivate

Referenced by Close(), and GetName().

std::string XrdCl::Socket::pPeerName
mutableprivate

Referenced by Close(), and GetPeerName().

sockaddr_in* XrdCl::Socket::pServerAddr
private
int XrdCl::Socket::pSocket
private
std::string XrdCl::Socket::pSockName
mutableprivate

Referenced by Close(), and GetSockName().

SocketStatus XrdCl::Socket::pStatus
private

The documentation for this class was generated from the following files: