13 static std::string resolveHostname(
const std::string &hostname);
19 uint64_t sentBytes()
const {
return _sent_bytes; }
24 const std::string& la,
26 const std::string& ra,
29 SocketDevice(proto p,
int _existing_socket );
31 std::string getDeviceAddress()
const;
32 inline std::string getError()
const {
return _error_string; }
33 inline bool hasIncomingData()
const {
return waitIncomingData(0); }
39 inline bool canRead()
const {
return _canRead; }
40 inline bool canWrite()
const {
return _canWrite; }
42 bool setTimeout(
int sec,
int usec);
46 bool setRemoteIP(
const std::string& ra );
47 bool setRemotePort(
int rp );
48 inline std::string getLocalIP()
const {
return _localAddress; }
49 inline std::string getRemoteIP()
const {
return _remoteAddress; }
50 inline int getLocalPort()
const {
return _localPort; }
51 inline int getRemotePort()
const {
return _remotePort; }
53 std::unique_ptr<SocketDevice> accept();
58 void setTcpNodelay(
bool s);
63 void setSoLinger(
int timeout );
66 bool readData( T& data )
68 return _readLoop( &data,
sizeof(data) ) ==
sizeof(data);
70 bool readString( std::string&
string );
72 bool readData(
void* data,
int size )
74 return _readLoop( data, size ) == size;
78 bool writeData(
const T& data )
80 return _writeLoop( &data,
sizeof(data) ) ==
sizeof(data);
82 bool writeString(
const std::string&
string );
84 bool writeData(
const void* data,
int size )
86 return _writeLoop( data, size ) == size;
90 void joinMulticastGroup();
91 bool setMulticastLoopback(
bool loopback_enabled);
92 bool setMulticastTTL(
int multicast_ttl);
94 int incomingDataSize()
const;
95 bool waitIncomingData( int64_t usecs )
const;
97 void setDelayConnect(
bool d );
98 bool getDelayConnect()
const;
100 bool setSocketReceiveBufferSize(
int desired_socket_size);
101 bool setSocketTransmitBufferSize(
int desired_socket_size);
103 bool isLocalPortValid()
const;
104 bool isRemotePortValid()
const;
106 inline int getFd()
const {
return _socket; }
109 static std::string getErrnoString(
const std::string &extra);
111 int _readLoop(
void* data,
int length );
112 int _writeLoop(
const void *data,
int length );
114 void updateAddresses();
115 void setErrorString(
const std::string& err );
116 void setCanRead(
bool cr );
117 void setCanWrite(
bool cw );
119 uint64_t _sent_bytes;
123 std::string _error_string;
132 std::string _localAddress;
133 std::string _remoteAddress;