Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
ArchNetworkBSD Class Reference

Berkeley (BSD) sockets implementation of IArchNetwork. More...

#include <ArchNetworkBSD.h>

Inheritance diagram for ArchNetworkBSD:
Collaboration diagram for ArchNetworkBSD:

Classes

struct  Deps

Public Member Functions

 ArchNetworkBSD (std::shared_ptr< Deps > deps=std::make_shared< Deps >())
 ArchNetworkBSD (ArchNetworkBSD const &)=delete
 ArchNetworkBSD (ArchNetworkBSD &&)=delete
 ~ArchNetworkBSD () override=default
ArchNetworkBSDoperator= (ArchNetworkBSD const &)=delete
ArchNetworkBSDoperator= (ArchNetworkBSD &&)=delete
void init () override
ArchSocket newSocket (AddressFamily, SocketType) override
 Create a new socket.
ArchSocket copySocket (ArchSocket s) override
 Copy a socket object.
void closeSocket (ArchSocket s) override
 Release a socket reference.
void closeSocketForRead (ArchSocket s) override
 Close socket for further reads.
void closeSocketForWrite (ArchSocket s) override
 Close socket for further writes.
void bindSocket (ArchSocket s, ArchNetAddress addr) override
 Bind socket to address.
void listenOnSocket (ArchSocket s) override
 Listen for connections on socket.
ArchSocket acceptSocket (ArchSocket s, ArchNetAddress *addr) override
 Accept connection on socket.
bool connectSocket (ArchSocket s, ArchNetAddress name) override
 Connect socket.
int pollSocket (PollEntry[], int num, double timeout) override
 Check socket state.
void unblockPollSocket (ArchThread thread) override
 Unblock thread in pollSocket()
size_t readSocket (ArchSocket s, void *buf, size_t len) override
 Read data from socket.
size_t writeSocket (ArchSocket s, const void *buf, size_t len) override
 Write data from socket.
void throwErrorOnSocket (ArchSocket) override
 Check error on socket.
bool setNoDelayOnSocket (ArchSocket, bool noDelay) override
 Turn Nagle algorithm on or off on socket.
bool setReuseAddrOnSocket (ArchSocket, bool reuse) override
 Turn address reuse on or off on socket.
std::string getHostName () override
 Return local host's name.
ArchNetAddress newAnyAddr (AddressFamily) override
 Create an "any" network address.
ArchNetAddress copyAddr (ArchNetAddress) override
 Copy a network address.
std::vector< ArchNetAddressnameToAddr (const std::string &) override
 Convert a name to a network address.
void closeAddr (ArchNetAddress) override
 Destroy a network address.
std::string addrToName (ArchNetAddress) override
 Convert an address to a host name.
std::string addrToString (ArchNetAddress) override
 Convert an address to a string.
AddressFamily getAddrFamily (ArchNetAddress) override
 Get an address's family.
void setAddrPort (ArchNetAddress, int port) override
 Set the port of an address.
int getAddrPort (ArchNetAddress) override
 Get the port of an address.
bool isAnyAddr (ArchNetAddress) override
 Test for the "any" address.
bool isEqualAddr (ArchNetAddress, ArchNetAddress) override
 Test addresses for equality.
Public Member Functions inherited from IInterface
virtual ~IInterface ()=default
 Interface destructor does nothing.

Additional Inherited Members

Public Types inherited from IArchNetwork
enum class  AddressFamily : uint8_t { Unknown , INet , INet6 }
 Supported address families. More...
enum class  SocketType : uint8_t { DataGram , Stream }
 Supported socket types. More...

Detailed Description

Berkeley (BSD) sockets implementation of IArchNetwork.

Constructor & Destructor Documentation

◆ ArchNetworkBSD() [1/3]

ArchNetworkBSD::ArchNetworkBSD ( std::shared_ptr< Deps > deps = std::make_shared<Deps>())
inlineexplicit

◆ ArchNetworkBSD() [2/3]

ArchNetworkBSD::ArchNetworkBSD ( ArchNetworkBSD const & )
delete

◆ ArchNetworkBSD() [3/3]

ArchNetworkBSD::ArchNetworkBSD ( ArchNetworkBSD && )
delete

◆ ~ArchNetworkBSD()

ArchNetworkBSD::~ArchNetworkBSD ( )
overridedefault

Member Function Documentation

◆ acceptSocket()

ArchSocket ArchNetworkBSD::acceptSocket ( ArchSocket s,
ArchNetAddress * addr )
overridevirtual

Accept connection on socket.

Accepts a connection on socket s, returning a new socket for the connection and filling in addr with the address of the remote end. addr may be nullptr if the remote address isn't required. The original socket s is unaffected and remains in the listening state. The new socket shares most of the properties of s except it's not in the listening state and it's connected. Returns nullptr if there are no pending connection requests.

Implements IArchNetwork.

◆ addrToName()

std::string ArchNetworkBSD::addrToName ( ArchNetAddress )
overridevirtual

Convert an address to a host name.

Implements IArchNetwork.

◆ addrToString()

std::string ArchNetworkBSD::addrToString ( ArchNetAddress )
overridevirtual

Convert an address to a string.

Implements IArchNetwork.

◆ bindSocket()

void ArchNetworkBSD::bindSocket ( ArchSocket s,
ArchNetAddress addr )
overridevirtual

Bind socket to address.

Binds socket s to the address addr.

Implements IArchNetwork.

◆ closeAddr()

void ArchNetworkBSD::closeAddr ( ArchNetAddress )
overridevirtual

Destroy a network address.

Implements IArchNetwork.

◆ closeSocket()

void ArchNetworkBSD::closeSocket ( ArchSocket s)
overridevirtual

Release a socket reference.

Deletes the given socket object. This does not destroy the socket the object referred to until there are no remaining references for the socket.

Implements IArchNetwork.

◆ closeSocketForRead()

void ArchNetworkBSD::closeSocketForRead ( ArchSocket s)
overridevirtual

Close socket for further reads.

Calling this disallows future reads on socket s.

Implements IArchNetwork.

◆ closeSocketForWrite()

void ArchNetworkBSD::closeSocketForWrite ( ArchSocket s)
overridevirtual

Close socket for further writes.

Calling this disallows future writes on socket s.

Implements IArchNetwork.

◆ connectSocket()

bool ArchNetworkBSD::connectSocket ( ArchSocket s,
ArchNetAddress addr )
overridevirtual

Connect socket.

Connects the socket s to the remote address addr. Returns true if the connection succeed immediately, false if the connection is in progress, and throws if the connection failed immediately. If it returns false, pollSocket() can be used to wait on the socket for writing to detect when the connection finally succeeds or fails.

Implements IArchNetwork.

◆ copyAddr()

ArchNetAddress ArchNetworkBSD::copyAddr ( ArchNetAddress )
overridevirtual

Copy a network address.

Implements IArchNetwork.

◆ copySocket()

ArchSocket ArchNetworkBSD::copySocket ( ArchSocket s)
overridevirtual

Copy a socket object.

Returns a reference to to socket referred to by s.

Implements IArchNetwork.

◆ getAddrFamily()

IArchNetwork::AddressFamily ArchNetworkBSD::getAddrFamily ( ArchNetAddress )
overridevirtual

Get an address's family.

Implements IArchNetwork.

◆ getAddrPort()

int ArchNetworkBSD::getAddrPort ( ArchNetAddress )
overridevirtual

Get the port of an address.

Implements IArchNetwork.

◆ getHostName()

std::string ArchNetworkBSD::getHostName ( )
overridevirtual

Return local host's name.

Implements IArchNetwork.

◆ init()

void ArchNetworkBSD::init ( )
overridevirtual

Implements IArchNetwork.

◆ isAnyAddr()

bool ArchNetworkBSD::isAnyAddr ( ArchNetAddress addr)
overridevirtual

Test for the "any" address.

Returns true if addr is the "any" address. newAnyAddr() returns an "any" address.

Implements IArchNetwork.

◆ isEqualAddr()

bool ArchNetworkBSD::isEqualAddr ( ArchNetAddress ,
ArchNetAddress  )
overridevirtual

Test addresses for equality.

Implements IArchNetwork.

◆ listenOnSocket()

void ArchNetworkBSD::listenOnSocket ( ArchSocket s)
overridevirtual

Listen for connections on socket.

Causes the socket s to begin listening for incoming connections.

Implements IArchNetwork.

◆ nameToAddr()

std::vector< ArchNetAddress > ArchNetworkBSD::nameToAddr ( const std::string & )
overridevirtual

Convert a name to a network address.

Implements IArchNetwork.

◆ newAnyAddr()

ArchNetAddress ArchNetworkBSD::newAnyAddr ( AddressFamily )
overridevirtual

Create an "any" network address.

Implements IArchNetwork.

◆ newSocket()

ArchSocket ArchNetworkBSD::newSocket ( AddressFamily ,
SocketType  )
overridevirtual

Create a new socket.

The socket is an opaque data type.

Implements IArchNetwork.

◆ operator=() [1/2]

ArchNetworkBSD & ArchNetworkBSD::operator= ( ArchNetworkBSD && )
delete

◆ operator=() [2/2]

ArchNetworkBSD & ArchNetworkBSD::operator= ( ArchNetworkBSD const & )
delete

◆ pollSocket()

int ArchNetworkBSD::pollSocket ( PollEntry [],
int num,
double timeout )
overridevirtual

Check socket state.

Tests the state of num sockets for readability and/or writability. Waits up to timeout seconds for some socket to become readable and/or writable (or indefinitely if timeout < 0). Returns the number of sockets that were readable (if readability was being queried) or writable (if writablility was being queried) and sets the m_revents members of the entries. PollEventMask::Error and PollEventMask::Invalid are set in m_revents as appropriate. If a socket indicates PollEventMask::Error then throwErrorOnSocket() can be used to determine the type of error. Returns 0 immediately regardless of the timeout if no valid sockets are selected for testing.

(Cancellation point)

Implements IArchNetwork.

◆ readSocket()

size_t ArchNetworkBSD::readSocket ( ArchSocket s,
void * buf,
size_t len )
overridevirtual

Read data from socket.

Read up to len bytes from socket s in buf and return the number of bytes read. The number of bytes can be less than len if not enough data is available. Returns 0 if the remote end has disconnected and/or there is no more queued received data.

Implements IArchNetwork.

◆ setAddrPort()

void ArchNetworkBSD::setAddrPort ( ArchNetAddress ,
int port )
overridevirtual

Set the port of an address.

Implements IArchNetwork.

◆ setNoDelayOnSocket()

bool ArchNetworkBSD::setNoDelayOnSocket ( ArchSocket ,
bool noDelay )
overridevirtual

Turn Nagle algorithm on or off on socket.

Set socket to send messages immediately (true) or to collect small messages into one packet (false). Returns the previous state.

Implements IArchNetwork.

◆ setReuseAddrOnSocket()

bool ArchNetworkBSD::setReuseAddrOnSocket ( ArchSocket ,
bool reuse )
overridevirtual

Turn address reuse on or off on socket.

Allows the address this socket is bound to to be reused while in the TIME_WAIT state. Returns the previous state.

Implements IArchNetwork.

◆ throwErrorOnSocket()

void ArchNetworkBSD::throwErrorOnSocket ( ArchSocket s)
overridevirtual

Check error on socket.

If the socket s is in an error state then throws an appropriate XArchNetwork exception.

Implements IArchNetwork.

◆ unblockPollSocket()

void ArchNetworkBSD::unblockPollSocket ( ArchThread thread)
overridevirtual

Unblock thread in pollSocket()

Cause a thread that's in a pollSocket() call to return. This call may return before the thread is unblocked. If the thread is not in a pollSocket() call this call has no effect.

Implements IArchNetwork.

◆ writeSocket()

size_t ArchNetworkBSD::writeSocket ( ArchSocket s,
const void * buf,
size_t len )
overridevirtual

Write data from socket.

Write up to len bytes to socket s from buf and return the number of bytes written. The number of bytes can be less than len if the remote end disconnected or the internal buffers fill up.

Implements IArchNetwork.


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