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 を参考にして下さい.