Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "session.h"
- #include <iostream>
- #include <iomanip>
- using namespace std;
- // -------------------------------------------------
- session::session(boost::asio::io_service& io_service)
- : socket_(io_service)
- , sqlsocket_(io_service)
- , resolver(io_service)
- {
- }
- session::~session()
- {
- cout << "closing session ..." << endl;
- socket_.close();
- sqlsocket_.close();
- }
- tcp::socket& session::socket()
- {
- return socket_;
- }
- void session::start()
- {
- //cout << "session::start()" << endl;
- // connect to the sqlserver database
- tcp::resolver::query query("10.10.10.10", "1433");
- tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
- tcp::endpoint endpoint = *endpoint_iterator;
- sqlsocket_.async_connect(endpoint,
- boost::bind(&session::handle_sqlserver_connect, this,
- boost::asio::placeholders::error, ++endpoint_iterator));
- }
- void session::handle_read(const boost::system::error_code& error,
- size_t bytes_transferred)
- {
- //cout << "session::handle_read()" << endl;
- if (!error)
- {
- boost::asio::async_write(sqlsocket_,
- boost::asio::buffer(buf, bytes_transferred),
- boost::bind(&session::handle_sqlserver_write, this,
- boost::asio::placeholders::error, bytes_transferred));
- }
- else
- {
- delete this;
- }
- }
- void session::handle_sqlserver_read(const boost::system::error_code& error,
- size_t bytes_transferred)
- {
- //cout << "session::handle_sqlserver_read()" << endl;
- if (!error)
- {
- boost::asio::async_write(socket_,
- boost::asio::buffer(sqlbuf, bytes_transferred),
- boost::bind(&session::handle_write, this,
- boost::asio::placeholders::error, bytes_transferred));
- }
- else
- {
- delete this;
- }
- }
- void session::handle_write(const boost::system::error_code& error,
- size_t bytes_transferred)
- {
- //cout << "session::handle_write()" << endl;
- if (!error)
- {
- sqlsocket_.async_read_some(boost::asio::buffer(sqlbuf, max_length),
- boost::bind(&session::handle_sqlserver_read, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
- }
- else
- {
- delete this;
- }
- }
- void session::handle_sqlserver_write(const boost::system::error_code& error,
- size_t bytes_transferred)
- {
- //cout << "session::handle_sqlserver_write()" << endl;
- if (!error)
- {
- socket_.async_read_some(boost::asio::buffer(buf, max_length),
- boost::bind(&session::handle_read, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
- }
- else
- {
- delete this;
- }
- }
- void session::handle_sqlserver_connect(const boost::system::error_code& error,
- tcp::resolver::iterator endpoint_iterator)
- {
- //cout << "session::handle_sqlserver_connect()" << endl;
- if (!error)
- {
- socket_.async_read_some(boost::asio::buffer(buf, max_length),
- boost::bind(&session::handle_read, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
- sqlsocket_.async_read_some(boost::asio::buffer(sqlbuf, max_length),
- boost::bind(&session::handle_sqlserver_read, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
- }
- else if (endpoint_iterator != tcp::resolver::iterator())
- {
- sqlsocket_.close();
- tcp::endpoint endpoint = *endpoint_iterator;
- sqlsocket_.async_connect(endpoint,
- boost::bind(&session::handle_sqlserver_connect, this,
- boost::asio::placeholders::error, ++endpoint_iterator));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement