class Transceiver
{
public:
static Transceiver* Create(const TransceiverConfig* pCfg);
Create() の引数には TransceiverConfig オブジェクトを与える。 TransceverConfig は、Transceiver の設定項目をメンバ変数として持った構造体である。 メンバ変数の値を指定して TransceiverCreate() 関数に与えると、その設定内容に応じた Transceiver オブジェクトを生成して返す。
struct TransceiverConfig {
int nAcceptor; //!< Acceptor の数。デフォルトは 0.
int nCommunicator; //!< Communicator の数。デフォルトは 0.
int nConcurrency; //!< turn() の並列数。0の場合は並列化しない。デフォルトは 0.
//! ソケットの送信バッファサイズ。負だとOS設定値を使う。デフォルトは -1.
int sockSendBufferSize;
//! ソケットの受信バッファサイズ。負だとOS設定値を使う。デフォルトは -1.
int sockRecvBufferSize;
//! 送信バッファのサイズ。デフォルトは 10000.
int nineSendBufferSize;
//! 受信バッファのサイズ。デフォルトは 10000.
int nineRecvBufferSize;
};
nCommunicator は、Transceiver が扱う最大の同時接続数を指定する。
nine は、初期化時に nCommunicator の接続を扱えるだけのメモリを確保する。 実際の接続以上に大きな値を与えると無駄なメモリを使うことになるので、この値は適切に調整する必要がある。
nAcceptor は、接続の受け付け口となるポートの最大数を指定する。
一般的に、アプリケーションがサーバーとして動作する場合は一つ、クライアントとして動作するならゼロを指定すればよい。
nine の送受信処理を並列化する場合に、並列数を指定する。0 の場合は並列処理をしない。
ソケットのバッファサイズを指定する。
ソケットバッファは OS が管理する領域で、ソケットバッファに書かれた内容がネットワークへ書き出され、逆に受信したデータがソケットバッファへ書かれる。これらの動作はアプリケーションの実行とは独立してカーネル処理として行われる。
nine 内部のバッファサイズを指定する。
読み込みにおいては、ソケットバッファから nineバッファへ読み込み、その nineバッファをアプリケーションへ渡す。書き込みにおいては、アプリケーションへ渡して書いてもらい、その内容をソケットバッファへ書き出す。
nine のメッセージ処理を行う場合は、一つのメッセージ全体がこの nineバッファへ格納できなければならない。