5 #ifndef GCOMM_ASIO_TCP_HPP
6 #define GCOMM_ASIO_TCP_HPP
9 #include "asio_protonet.hpp"
11 #include <boost/bind.hpp>
12 #include <boost/array.hpp>
13 #include <boost/enable_shared_from_this.hpp>
20 class AsioTcpAcceptor;
27 public boost::enable_shared_from_this<AsioTcpSocket>
32 void failed_handler(
const asio::error_code& ec,
const std::string& func,
int line);
33 #ifdef HAVE_ASIO_SSL_HPP
34 void handshake_handler(
const asio::error_code& ec);
35 #endif // HAVE_ASIO_SSL_HPP
36 void connect_handler(
const asio::error_code& ec);
37 void connect(
const gu::URI& uri);
39 void write_handler(
const asio::error_code& ec,
40 size_t bytes_transferred);
42 size_t read_completion_condition(
43 const asio::error_code& ec,
44 const size_t bytes_transferred);
45 void read_handler(
const asio::error_code& ec,
46 const size_t bytes_transferred);
49 std::string local_addr()
const;
50 std::string remote_addr()
const;
51 State state()
const {
return state_; }
52 SocketId id()
const {
return &socket_; }
59 void read_one(boost::array<asio::mutable_buffer, 1>& mbs);
60 void write_one(
const boost::array<asio::const_buffer, 2>& cbs);
65 void assign_local_addr();
66 void assign_remote_addr();
69 asio::ip::tcp::socket socket_;
70 #ifdef HAVE_ASIO_SSL_HPP
71 asio::ssl::stream<asio::ip::tcp::socket>* ssl_socket_;
72 #endif // HAVE_ASIO_SSL_HPP
73 std::deque<Datagram> send_q_;
74 std::vector<gu::byte_t> recv_buf_;
79 std::string local_addr_;
80 std::string remote_addr_;
92 const asio::error_code& error);
93 void listen(
const gu::URI& uri);
94 std::string listen_addr()
const;
100 gu_throw_fatal <<
"TODO:";
103 SocketId id()
const {
return &acceptor_; }
107 asio::ip::tcp::acceptor acceptor_;
108 SocketPtr accepted_socket_;
111 #endif // GCOMM_ASIO_TCP_HPP
Definition: asio_protonet.hpp:29
Definition: asio_tcp.hpp:84
Definition: asio_tcp.hpp:25
Definition: socket.hpp:72
Definition: socket.hpp:29
Datagram container.
Definition: datagram.hpp:151