rohdeschwarz  0.2.0
TCPIP socket library for Rohde & Schwarz instrument control
socket.hpp
Go to the documentation of this file.
1 
5 #ifndef ROHDESCHWARZ_BUSSES_SOCKET_SOCKET_HPP
6 #define ROHDESCHWARZ_BUSSES_SOCKET_SOCKET_HPP
7 
8 
9 // rohdeschwarz
11 
12 
13 // boost
14 #include <boost/asio.hpp>
15 
16 
17 // std lib
18 #include <cstddef>
19 #include <string>
20 
21 
23 {
24 
25 
33 
34 
39 {
40 
41 public:
42 
43 
54  Socket(const char* host, int port = 5025);
55 
56 
67  Socket(const std::string& host, int port = 5025);
68 
69 
75  virtual ~Socket();
76 
77 
81  std::string host() const;
82 
83 
87  int port() const;
88 
89 
93  virtual std::string endpoint() const;
94 
95 
99  virtual int timeout_ms() const;
100 
101 
105  virtual bool setTimeout(int timeout_ms);
106 
107 
116  virtual bool readData(unsigned char* buffer, std::size_t bufferSize, std::size_t* readSize = nullptr);
117 
118 
127  virtual bool writeData(const unsigned char* data, std::size_t dataSize, std::size_t* writeSize = nullptr);
128 
129 
135  virtual bool isError() const;
136 
137 
144  virtual std::string statusMessage() const;
145 
146 
147 private:
148 
149  // end point
150  std::string _host;
151  int _port;
152 
153 
154  // socket
155  boost::asio::io_context _io_context;
156  boost::asio::ip::tcp::socket _socket;
157  boost::asio::ip::tcp::socket::native_handle_type _native_handle;
158 
159 
160  // helpers
161 
162 
166  bool open();
167 
168 
172  void close();
173 
174 
175 }; // class Socket
176 
177 
178 } // namespace rohdeschwarz::busses::socket
179 #endif // ROHDESCHWARZ_BUSSES_SOCKET_SOCKET_HPP
rohdeschwarz::busses::Bus class definition
std::vector< unsigned char > * buffer()
Definition: bus.cpp:53
A class for managing synchronous TCP IP sockets.
Definition: socket.hpp:39
virtual bool isError() const
Checks socket state for error.
Definition: socket.cpp:175
virtual bool readData(unsigned char *buffer, std::size_t bufferSize, std::size_t *readSize=nullptr)
read data into buffer
Definition: socket.cpp:119
virtual int timeout_ms() const
Get timeout, in ms.
Definition: socket.cpp:75
int port() const
returns the port
Definition: socket.cpp:61
virtual std::string endpoint() const
Returns string '{host}:{port}'.
Definition: socket.cpp:67
Socket(const char *host, int port=5025)
Constructor.
Definition: socket.cpp:29
virtual std::string statusMessage() const
human-readable bus status message
Definition: socket.cpp:181
std::string host() const
returns the host or ip address
Definition: socket.cpp:55
virtual bool writeData(const unsigned char *data, std::size_t dataSize, std::size_t *writeSize=nullptr)
read data into buffer
Definition: socket.cpp:147
virtual bool setTimeout(int timeout_ms)
Set timeout, in ms.
Definition: socket.cpp:90
virtual ~Socket()
Destructor.
Definition: socket.cpp:49
boost::system::system_error system_error
System error exception.
Definition: socket.hpp:32
rohdeschwarz::busses::socket::system_error system_error
Definition: main.cpp:15