CLX C++ Libraries - sockhandler
Author: clown

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