socket.h
Go to the documentation of this file.
1 /*
2  * RoboPeak Project
3  * HAL Layer - Socket Interface
4  * Copyright 2009 - 2013 RoboPeak Project
5  */
6 
7 #pragma once
8 
9 #include <vector>
10 
11 namespace rp{ namespace net {
12 
14 {
15 
16 public:
18  ADDRESS_TYPE_UNSPEC = 0,
19  ADDRESS_TYPE_INET = 1,
20  ADDRESS_TYPE_INET6 = 2,
21  };
22 
23 public:
24 
25 
26 
27  SocketAddress();
28  SocketAddress(const char * addrString, int port, address_type_t = ADDRESS_TYPE_INET);
29  // do not use this function, internal usage
30  SocketAddress(void * platform_data);
32 
33  SocketAddress & operator = (const SocketAddress &);
34 
35  virtual ~SocketAddress();
36 
37  virtual int getPort() const;
38  virtual u_result setPort(int port);
39 
40  virtual u_result setAddressFromString(const char * address_string, address_type_t = ADDRESS_TYPE_INET);
41  virtual u_result getAddressAsString(char * buffer, size_t buffersize) const;
42 
43  virtual address_type_t getAddressType() const;
44 
45  virtual u_result getRawAddress(_u8 * buffer, size_t bufferSize) const;
46 
47  const void * getPlatformData() const {
48  return _platform_data;
49  }
50 
51  virtual void setLoopbackAddress(address_type_t = ADDRESS_TYPE_INET);
52  virtual void setBroadcastAddressIPv4();
53  virtual void setAnyAddress(address_type_t = ADDRESS_TYPE_INET);
54 
55 public:
56  static size_t LoopUpHostName(const char * hostname, const char * sevicename, std::vector<SocketAddress> &addresspool , bool performDNS = true, address_type_t = ADDRESS_TYPE_INET);
57 
58 protected:
60 };
61 
62 
63 
64 class SocketBase
65 {
66 public:
71  };
72 
73 
78  };
79 
80  enum {
81  DEFAULT_SOCKET_TIMEOUT = 10000, //10sec
82  };
83 
84  virtual ~SocketBase() {}
85  virtual void dispose() = 0;
86  virtual u_result bind(const SocketAddress & ) = 0;
87 
88  virtual u_result getLocalAddress(SocketAddress & ) = 0;
89  virtual u_result setTimeout(_u32 timeout, socket_direction_mask msk = SOCKET_DIR_BOTH) = 0;
90 
91  virtual u_result waitforSent(_u32 timeout = DEFAULT_SOCKET_TIMEOUT) = 0;
92  virtual u_result waitforData(_u32 timeout = DEFAULT_SOCKET_TIMEOUT) = 0;
93 protected:
94  SocketBase() {}
95 };
96 
97 
99 {
100 public:
101 
102  enum {
103  MAX_BACKLOG = 128,
104  };
105 
106  static StreamSocket * CreateSocket(socket_family_t family = SOCKET_FAMILY_INET);
107 
108  virtual u_result connect(const SocketAddress & pairAddress) = 0;
109 
110  virtual u_result listen(int backlog = MAX_BACKLOG) = 0;
111  virtual StreamSocket * accept(SocketAddress * pairAddress = NULL) = 0;
112  virtual u_result waitforIncomingConnection(_u32 timeout = DEFAULT_SOCKET_TIMEOUT) = 0;
113 
114  virtual u_result send(const void * buffer, size_t len) = 0;
115 
116  virtual u_result recv(void *buf, size_t len, size_t & recv_len) = 0;
117 
118  virtual u_result getPeerAddress(SocketAddress & ) = 0;
119 
120  virtual u_result shutdown(socket_direction_mask mask) = 0;
121 
122  virtual u_result enableKeepAlive(bool enable = true) = 0;
123 
124  virtual u_result enableNoDelay(bool enable = true) = 0;
125 
126 protected:
127  virtual ~StreamSocket() {} // use dispose();
129 };
130 
132 {
133 
134 public:
135 
136  static DGramSocket * CreateSocket(socket_family_t family = SOCKET_FAMILY_INET);
137 
138  virtual u_result setPairAddress(const SocketAddress * pairAddress) = 0;
139  virtual u_result sendTo(const SocketAddress * target, const void * buffer, size_t len) = 0;
140  virtual u_result recvFrom(void *buf, size_t len, size_t & recv_len, SocketAddress * sourceAddr = NULL) = 0;
141  virtual u_result clearRxCache() = 0;
142 
143 protected:
144  virtual ~DGramSocket() {} // use dispose();
145 
147 };
148 
149 }}
u_result
uint32_t u_result
Definition: rptypes.h:100
rp::net::StreamSocket::~StreamSocket
virtual ~StreamSocket()
Definition: socket.h:127
rp::net::SocketBase::SOCKET_FAMILY_RAW
@ SOCKET_FAMILY_RAW
Definition: socket.h:70
rp::net::StreamSocket
Definition: socket.h:98
rp::net::SocketBase::socket_direction_mask
socket_direction_mask
Definition: socket.h:74
getPort
ROSCPP_DECL uint32_t getPort()
rp::net::SocketBase::SOCKET_FAMILY_INET6
@ SOCKET_FAMILY_INET6
Definition: socket.h:69
rp::net::SocketBase::getLocalAddress
virtual u_result getLocalAddress(SocketAddress &)=0
rp::net::DGramSocket::~DGramSocket
virtual ~DGramSocket()
Definition: socket.h:144
rp::net::SocketBase::dispose
virtual void dispose()=0
_u8
uint8_t _u8
Definition: rptypes.h:63
shutdown
ROSCONSOLE_DECL void shutdown()
_single_thread
#define _single_thread
Definition: types.h:84
rp::net::DGramSocket
Definition: socket.h:131
rp::net::StreamSocket::StreamSocket
StreamSocket()
Definition: socket.h:128
rp::net::SocketAddress::_platform_data
void * _platform_data
Definition: socket.h:59
rp::net::SocketBase::~SocketBase
virtual ~SocketBase()
Definition: socket.h:84
rp::net::SocketBase::SOCKET_DIR_BOTH
@ SOCKET_DIR_BOTH
Definition: socket.h:77
rp::net::SocketBase
Definition: socket.h:64
rp::net::SocketBase::waitforData
virtual u_result waitforData(_u32 timeout=DEFAULT_SOCKET_TIMEOUT)=0
rp::net::SocketBase::SocketBase
SocketBase()
Definition: socket.h:94
rp::net::SocketAddress::address_type_t
address_type_t
Definition: socket.h:17
rp::net::SocketBase::SOCKET_DIR_RD
@ SOCKET_DIR_RD
Definition: socket.h:75
rp::net::SocketAddress::getPlatformData
const void * getPlatformData() const
Definition: socket.h:47
rp::net::SocketAddress
Definition: socket.h:13
rp::net::SocketBase::setTimeout
virtual u_result setTimeout(_u32 timeout, socket_direction_mask msk=SOCKET_DIR_BOTH)=0
rp::net::SocketBase::DEFAULT_SOCKET_TIMEOUT
@ DEFAULT_SOCKET_TIMEOUT
Definition: socket.h:81
rp::net::SocketBase::SOCKET_DIR_WR
@ SOCKET_DIR_WR
Definition: socket.h:76
rp
Definition: rplidar_driver.h:43
rp::net::SocketBase::waitforSent
virtual u_result waitforSent(_u32 timeout=DEFAULT_SOCKET_TIMEOUT)=0
rp::net::DGramSocket::DGramSocket
DGramSocket()
Definition: socket.h:146
rp::net::SocketBase::bind
virtual u_result bind(const SocketAddress &)=0
rp::net::SocketBase::socket_family_t
socket_family_t
Definition: socket.h:67
_u32
uint32_t _u32
Definition: rptypes.h:69
rp::net::SocketBase::SOCKET_FAMILY_INET
@ SOCKET_FAMILY_INET
Definition: socket.h:68


rplidar_ros
Author(s):
autogenerated on Fri Aug 2 2024 08:42:14