CLX C++ Libraries
Home >> sockmanager >> sockhandler

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

Related Pages

  1. CLX C++ Libraries - sockmanager