#pragma once
#include <boost/bind.hpp>
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
class session
{
public:
session(boost::asio::io_service& io_service);
session::~session();
tcp::socket& socket();
void start();
private:
void handle_read(const boost::system::error_code& error,
size_t bytes_transferred);
void handle_write(const boost::system::error_code& error,
size_t bytes_transferred);
void handle_sqlserver_connect(const boost::system::error_code& error,
tcp::resolver::iterator endpoint_iterator);
void handle_sqlserver_read(const boost::system::error_code& error,
size_t bytes_transferred);
void handle_sqlserver_write(const boost::system::error_code& error,
size_t bytes_transferred);
private:
tcp::socket socket_;
tcp::socket sqlsocket_;
tcp::resolver resolver;
enum { max_length = 8192 };
boost::array<char, max_length> buf;
boost::array<char, max_length> sqlbuf;
std::string user;
std::string pass;
std::string dbserver;
std::string database;
};