Next steps in fine tuning.
[bpdyndnsd] / src / tcp_service.h
CommitLineData
6650af14
BS
1/** @file
2 * @brief TCPService class header. This class represents a TCP client.
3 *
4 *
5 *
6 * @copyright Intra2net AG
7 * @license GPLv2
8*/
9
10#ifndef TCPSERVICE_H
11#define TCPSERVICE_H
12
13#include "logger.h"
ca5d6889 14#include "ip_service.h"
6650af14
BS
15
16#include <boost/shared_ptr.hpp>
17#include <boost/asio.hpp>
18#include <boost/asio/ssl.hpp>
19
20typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> SSLStream;
21
22class TCPService : public IPService
23{
24
25private:
26
27 boost::shared_ptr<SSLStream> Socket;
28 // IOService has to be a member, otherwise the socket.close() operation will throw "mutex: Invalid argument"
29 // Bug in boost::asio ? Cause no docs found concerning this issue. The socket.close() operation is trying to clean up io_service.
30 boost::asio::io_service IOService;
31
32public:
33
34 typedef boost::shared_ptr<TCPService> Ptr;
35
36 TCPService();
37
38 ~TCPService();
39
40 virtual int connect(const std::string& _hostname, const std::string& _port) throw (boost::system::system_error);
41
42 std::string read_from_socket() throw (boost::system::system_error);
43
44 int write_to_socket(const std::string& data) throw (boost::system::system_error);
45
46 int close() throw (boost::system::system_error);
47};
48
49#endif