3 #include <boost/bind.hpp>
7 using namespace boost::asio
;
8 using namespace boost::asio::ip
;
11 raggin::socket::socket(asio::io_service
& io_service
)
12 :tcp::socket(io_service
)
16 raggin::socket::socket(socket_ptr other_socket_ptr
)
17 :tcp::socket(other_socket_ptr
->get_io_service(), tcp::v4(), other_socket_ptr
->native())
18 ,other_socket_ptr_(other_socket_ptr
)
22 raggin::socket::~socket()
26 void raggin::socket::close()
31 void raggin::socket::accept(uint16_t port
)
33 acceptor_ptr_
.reset(new tcp::acceptor(get_io_service(), tcp::endpoint(tcp::v4(), port
)));
36 acceptor_ptr_
->accept(static_cast<boost::asio::ip::tcp::socket
&>(*this));
37 acceptor_ptr_
.reset();
41 acceptor_ptr_
.reset();
46 void raggin::socket::async_accept(uint16_t port
, accept_handler handler
)
48 acceptor_ptr_
.reset(new tcp::acceptor(get_io_service(), tcp::endpoint(tcp::v4(),port
)));
49 acceptor_ptr_
->async_accept(static_cast<boost::asio::ip::tcp::socket
&>(*this),
50 boost::bind(&socket::handle_async_accept
, this, _1
, handler
));
53 void raggin::socket::handle_async_accept(const boost::system::error_code
& error
, accept_handler handler
)
55 LOG
<< "socket.handle_async_accept: " << (error
?"error":"no error");
56 acceptor_ptr_
.reset();
60 void raggin::socket::connect(const string
& ip
, uint16_t port
)
62 tcp::endpoint
endpoint(address().from_string(ip
), port
);
63 tcp::socket::connect(endpoint
);
66 void raggin::socket::async_connect(tcp::endpoint endpoint
, connect_handler handler
)
68 LOG
<< "socket.async_connect";
69 tcp::socket::async_connect(endpoint
, handler
);
72 void raggin::socket::async_connect(const string
& ip
, uint16_t port
, connect_handler handler
)
74 tcp::endpoint
endpoint(address::from_string(ip
), port
);
75 async_connect(endpoint
, handler
);
79 boost::asio::ip::tcp::endpoint
raggin::socket::local_endpoint() const
81 return tcp::socket::local_endpoint();
84 boost::asio::ip::tcp::endpoint
raggin::socket::remote_endpoint() const
86 return tcp::socket::remote_endpoint();