TServer

Apache のようにあらかじめ複数のプロセスを起動して接続を待ち受けるネッ
トワークサーバプログラムを簡単に作れるようにするためのライブラリです。

[必要なもの]

・Ruby 1.6.7 以上

[ライセンス]

  このプログラムは Ruby ライセンスに従います。

[機能]

  あらかじめ複数のプロセスを起動しておくことができます(デフォルト 5)。
  すべてのプロセスがクライアントから接続されている時に新たな接続がされ
  た場合は、自動的に新しいプロセスが起動します(最大プロセス数のデフォ
  ルト 50)。各プロセスは接続が切断されても、次の接続のために生き続けま
  すが、ある数だけ接続を処理すると死にます(デフォルト 50)。

  親プロセスは次のシグナルを特別に扱います。

    SIGTERM
	子プロセスをすべて終了させて自分も死にます。

    SIGHUP
	子プロセスをすべて終了させて新たな子プロセスを起動します。

    SIGUSR1
	SIGHUP と同じですが、接続中の子プロセスは接続が切れるまで終了
	しません。

[使用例]

  以下はポート8888で起動し、クライアントに現在時刻を返すプログラムです。

	require 'tserver'
	ts = TServer::new(8888)
	ts.start do |s|
	  s.puts Time::now
	end

[クラスメソッド]

TServer::new(port)

  ポート port で accept する TServer オブジェクトを返します。

TServer::new(IPaddr, port)

  IPアドレス IPaddr のポート port で accept する TServer オブジェクト
  を返します。

TServer::new(socket)

  ソケット socket で accept する TServer オブジェクトを返します。

[インスタンスメソッド]

TServer#start {|s| ...}

  accept を開始します。クライアントから接続された場合はブロックが実行
  されます。ブロック引数は通信用ソケット(accept の戻り値)です。

TServer#sock

  ソケットを返します。

TServer#min_servers, TServer#min_servers=n

  最小サーバプロセス数を返し/設定します。サーバプロセス数がこの値以下
  になった場合は、この値までプロセスを起動します。

TServer#max_servers, TServer#max_servers=n

  最大サーバプロセス数を返し/設定します。サーバプロセス数はこの値以上
  には起動しません。

TServer#max_request_per_child, TServer#max_request_per_child=n
TServer#max_use, TServer#max_use=n

  １プロセスあたりの最大接続数を返し/設定します。この回数分の接続を処
  理したプロセスは終了します。0 に設定すると終了しません。

TServer#max_idle, TServer#max_idle=n

  min_servers より多くのプロセスがある場合、接続待ち時間がこの値を超え
  るとプロセスが終了します。

[履歴]

0.0.4	2002/12/01
	・max_use 追加
	・子プロセス起動のタイミングを変更

0.0.3	2002/11/20
	・max_idle 追加

0.0.2	2002/11/12
	・TERM,CHLD,HUP,USR1 に対するシグナルハンドラが事前に登録され
	  ている場合は、TServer の処理後にそれを呼び出すようにした。

0.0.1	2002/11/11
	・公開

[作者]

  e-mail: とみたまさひろ <tommy@tmtm.org>
  http://www.tmtm.org/ruby/tpty/

$Id: README.ja,v 1.6 2002/12/01 17:14:23 tommy Exp $
