mirror of https://github.com/opencardev/aasdk
Wrap all used socket functions
parent
e5e72d1eda
commit
219d8dd525
|
@ -15,11 +15,14 @@ class ITCPWrapper
|
|||
{
|
||||
public:
|
||||
typedef std::function<void(const boost::system::error_code&, size_t)> Handler;
|
||||
typedef std::function<void(const boost::system::error_code&)> ConnectHandler;
|
||||
|
||||
virtual ~ITCPWrapper() = default;
|
||||
|
||||
virtual void asyncWrite(boost::asio::ip::tcp::socket& socket, common::DataConstBuffer buffer, Handler handler) = 0;
|
||||
virtual void asyncRead(boost::asio::ip::tcp::socket& socket, common::DataBuffer buffer, Handler handler) = 0;
|
||||
virtual void close(boost::asio::ip::tcp::socket& socket) = 0;
|
||||
virtual void asyncConnect(boost::asio::ip::tcp::socket& socket, const std::string& hostname, uint16_t port, ConnectHandler handler) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@ class TCPWrapper: public ITCPWrapper
|
|||
public:
|
||||
void asyncWrite(boost::asio::ip::tcp::socket& socket, common::DataConstBuffer buffer, Handler handler) override;
|
||||
void asyncRead(boost::asio::ip::tcp::socket& socket, common::DataBuffer buffer, Handler handler) override;
|
||||
void close(boost::asio::ip::tcp::socket& socket) override;
|
||||
void asyncConnect(boost::asio::ip::tcp::socket& socket, const std::string& hostname, uint16_t port, ConnectHandler handler) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -36,9 +36,7 @@ void TCPEndpoint::receive(common::DataBuffer buffer, Promise::Pointer promise)
|
|||
|
||||
void TCPEndpoint::stop()
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
|
||||
socket_.close(ec);
|
||||
tcpWrapper_.close(socket_);
|
||||
}
|
||||
|
||||
void TCPEndpoint::asyncOperationHandler(const boost::system::error_code& ec, size_t, Promise::Pointer promise)
|
||||
|
|
|
@ -18,6 +18,18 @@ void TCPWrapper::asyncRead(boost::asio::ip::tcp::socket& socket, common::DataBuf
|
|||
boost::asio::async_read(socket, boost::asio::buffer(buffer.data, buffer.size), std::move(handler));
|
||||
}
|
||||
|
||||
void TCPWrapper::close(boost::asio::ip::tcp::socket& socket)
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
|
||||
socket.close(ec);
|
||||
}
|
||||
|
||||
void TCPWrapper::asyncConnect(boost::asio::ip::tcp::socket& socket, const std::string& hostname, uint16_t port, ConnectHandler handler)
|
||||
{
|
||||
socket.async_connect(boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string(hostname), port), std::move(handler));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue