Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > webrick/serverライブラリ > WEBrick::GenericServerクラス

class WEBrick::GenericServer

クラスの継承リスト: WEBrick::GenericServer < Object < Kernel

要約

サーバの一般的な機能を提供するクラスです。 WEBrick::HTTPServer のスーパークラスです。

目次

特異メソッド
new new
インスタンスメソッド
[] config listen listeners logger run shutdown ssl_context start status stop tokens

特異メソッド

new(config = {}, default = WEBrick::Config::General) -> WEBrick::GenericServer[permalink][rdoc]

GenericServer オブジェクトを生成して返します。

[PARAM] config:
サーバの設定を保存したハッシュを指定します。有効なキーと 値は以下のとおりです。
:ServerName

サーバのホスト名を表す文字列を指定します。デフォルトの Utils.getservername は /etc/hostname に書かれている文字列です。

:BindAddress

サーバのアドレスを指定します。デフォルトの nil や "0.0.0.0", "::" などを指定した 場合は使用可能なすべてのネットワークインターフェースに対して listen を開始します。 socket/ホスト指定形式 を参照して下さい。

:Port

サーバのポートを指定します。socket/サービス指定形式を参照を参照して下さい。

:MaxClients

クライアントの最大接続数を表す整数です。

:ServerType

サーバのタイプを表すクラスを指定します。指定するクラスはブロックを取るstartという名前のクラスメソッドを持つ必要があります。サーバは、startメソッドの中でクライアントからの応答待ちのループ処理を実行します。WEBrickは呼ばれたスレッド内で実行するWEBrick::SimpleServer と、子プロセスをforkしてデーモンとして実行するWEBrick::Daemon を提供します。また、Threadを指定するとサーバはスレッド内で実行されるためWEBrick::GenericServer#startは呼び出し直後に呼び出し元に制御を戻します。

:Logger

ログをとるオブジェクト(Logger オブジェクト)を指定します。通常は WEBrick::Log のインスタンスを指定します。 WEBrick::Log.new(log_file, level) のように出力先とログレベルを設定することができます。 Logger オブジェクトに定義されているべきメソッドに関しては WEBrick::Log を参照して下さい。

:ServerSoftware

サーバソフトウェア名を文字列で指定します。WEBrick::HTTPServer では Server ヘッダにこの値が出力されます。

:DoNotListen

true の場合、GenericServer オブジェクトを生成しただけでは listen を開始しません。

:StartCallback

start 開始時に呼ばれる Proc オブジェクト。呼ばれる時に引数は 特に与えられません。

:StopCallback

サーバを stop した時に呼ばれる Proc オブジェクトを指定します。呼ばれる時に引数は 特に与えられません。

:AcceptCallback

クライアントからの接続を accept したときに呼ばれる Proc オブジェクトを指定します。 クライアントと接続された TCPSocket オブジェクトを引数として呼ばれます。

[PARAM] default:
サーバのデフォルトの設定を保存したハッシュを指定します。指定された config で 設定がなかった項目に関してはこの default の値が使われます。

[SEE_ALSO] WEBrick::Config::General

new(config = {}, default = WEBrick::Config::General) -> WEBrick::GenericServer[permalink][rdoc] [redefined by webrick/ssl]

GenericServer オブジェクトを生成して返します。

config で有効な項目が増えます。以下は増える項目とそのデフォルト値です。

:ServerSoftware       => "#{svrsoft} OpenSSL/#{osslv}",
:SSLEnable            => true, # Ruby 1.8.3 以降では false がデフォルトです。
:SSLCertificate       => nil,
:SSLPrivateKey        => nil,
:SSLClientCA          => nil,
:SSLExtraChainCert    => nil,
:SSLCACertificateFile => nil,
:SSLCACertificatePath => nil,
:SSLCertificateStore  => nil,
:SSLVerifyClient      => ::OpenSSL::SSL::VERIFY_NONE,
:SSLVerifyDepth       => nil,
:SSLVerifyCallback    => nil,   # custom verification
:SSLTimeout           => nil,
:SSLOptions           => nil,
:SSLStartImmediately  => true,
# Must specify if you use auto generated certificate.
:SSLCertName          => nil,
:SSLCertComment       => "Generated by Ruby/OpenSSL"
[PARAM] config:
サーバの設定を保存したハッシュを指定します。
[PARAM] default:
サーバのデフォルトの設定を保存したハッシュを指定します。指定された config で 設定がなかった項目に関してはこの default の値が使われます。

[SEE_ALSO] WEBrick::Config::General

インスタンスメソッド

self[key] -> object[permalink][rdoc]

self.config[key] と同じです。

config -> Hash[permalink][rdoc]

サーバの設定を保存したハッシュを返します。

listen(address, port) -> [TCPServer][permalink][rdoc]

与えられたアドレスとポートで TCPServer オブジェクトを生成し listener として管理します。

[PARAM] address:
アドレスを文字列で指定します。
[PARAM] port:
listen するポートを整数で指定します。

[SEE_ALSO] WEBrick::GenericServer#listeners, TCPServer#listen

listeners -> [TCPServer][permalink][rdoc]

listen している TCPServer オブジェクトの配列を返します。

logger -> WEBrick::Log[permalink][rdoc]

生成する時に指定された、自身をロギングする WEBrick::Log のインス タンスを返します。

run(sock) -> ()[permalink][rdoc]

クライアントと接続された TCPSocket オブジェクトを引数として呼ばれ、 具体的な処理を行います。 WEBrick::GenericServer のサブクラスはこのメソッドを適切に再定義しなければいけません。

[PARAM] sock:
クライアントと接続された TCPSocket オブジェクトを指定します。
shutdown -> ()[permalink][rdoc]

WEBrick::GenericServer#stop を呼び、全ての listeners を close します。

ssl_context -> OpenSSL::SSL::SSLContext | nil[permalink][rdoc] [redefined by webrick/ssl]

サーバが保持する OpenSSL::SSL::SSLContext オブジェクトを返します。

start -> ()[permalink][rdoc]
start {|soc| ... } -> ()

サーバをスタートします。

ブロックが与えられた場合 WEBrick::GenericServer#run メソッドの 代わりにブロックが実際のクライアントとの応答を担います。 ブロックは TCPSocket オブジェクトを引数として呼ばれます。

status -> Symbol[permalink][rdoc]

現在のサーバのステータスを Symbol オブジェクトで返します。 値は :Running(活動中), :Shutdown(終了処理中), :Stop(完全に停止) のいずれかです。

stop -> ()[permalink][rdoc]

サーバを停止します。

実際にはサーバの状態を :Shutdown にするだけで、サーバがすぐに停止すると は限りません。

tokens -> SizedQueue[permalink][rdoc]

MaxClient の設定のために使われる SizedQueue オブジェクトを返しま す。SizedQueue オブジェクトのサイズは現在受け付けることのできるク ライアントの数です。

MaxClient を知りたい場合は self.tokens.max です。 self.tokens.max - self.tokens.length が現在のクライアントの接続数です。