Overview
sockmanager を使用するときに利用する handler の実装例です.現在のところ,実装しているものは TCP 通信に関するものだけです.
accept_handler
namespace tcp {
template <class Socket, class Service>
class accept_handler {
public:
typedef Socket socket_type;
typedef clx::tcp::acceptor acceptor_type;
typedef Service service_handler;
accept_handler();
virtual ~accept_handler();
template <class T, class SockManager>
bool operator()(T* s, SockManager& sm);
};
};
accept_handler は,tcp::accepor が利用する handler です. クライアントから接続要求があると accept() メソッドで接続要求を受け付けて通信用ソケット (Socket) を生成し,通信用ハンドラ (Service) とともに sockmanager へ登録します. Socket には tcp::socket,tcp::sockstream,または,それらを継承したクラスを指定することができます. Service には,生成された通信用ソケットにデータが到着した時に呼び出される handler を指定します.尚,accept_handler は Service を生成する際に,引数として acceptor のソケット番号を指定するので,引数として socket_int を持つコンストラクタを定義しておく必要があります.
echo_handler
namespace tcp {
class echo_handler {
public:
typedef clx::tcp::sockstream socket_type;
echo_handler();
explicit echo_handler(socket_int s);
virtual ~echo_handler();
template <class T, class SockT>
bool operator()(T* s, SockManager& sm);
};
};
echo_handler は,受信したデータをそのまま送信元へ送り返す handler です. handler の簡単な実装例として記載しておきました.自分で handler を実装する際には, この handler を参考にして実装して下さい.
Example
sockmanager の Examples を参考にして下さい.