Kahua Release
- Release Note
- Download
- Current Version 1.0.7.3 (2008-05-08)
kahua-web Release
- kahua-webとは
- Release Note
- Download
- Current Version 0.3.1 (2007-06-12)
Security Advisory
Event Log
Documentation
For developers
Site info
Related Site
[module] kahua.gsid
グローバルセッションID (gsid) を扱うための手続き群を提供します。
アプリケーションコードにおいては、通常はkahua.sessionモジュールが自 動的にセッションIDを作成するので、このモジュールのAPIを直接使う必要はあ まりないでしょう。
アプリケーションサーバー以外のKahuaユーティリティは、GSIDを解読するのに このモジュールが必要です。
Global session ID (GSID)
セッションIDは2つの文字列から構成されます。ひとつは継続IDで、そのセッショ ンの中の継続のひとつに対応します。この継続はリスタート可能であり、同じ 継続IDを使うことで、明示的に無効化されるまでの間であればセッションをバッ クトラックするために再利用することができます。言葉を換えれば、継続IDは デフォルトで無限エクステントを持ちます。
もう一方は状態IDで、セッションにおけるモナディックな状態を表現していま す。これは状態に関する情報を含みます--つまり、バックトラックできません。
典型的なWebセッションにおいては、継続IDはPOSTリクエストのパラメータか URLに保持され、状態IDはCookieに保持されます。
この2つのIDは次のような書式で構成されます。
1-HHHHH-BBBBBBB
最初の'1'はGSIDのバージョンを表します。HとBはヘッダとボディを意味します。 バージョン番号の後ろの書式は、今後のバージョンにおいては変更されるかも しれません。バージョン1においては、ヘッダはワーカIDのみを含みます。ボディ はそのワーカに依存します。HやBには'-'(ハイフン)を含んではいけません。
[procedure] make-gsid worker-id body
GSID形式の文字列をworker-idとbodyから作成して返します。
この手続きは単に文字列を作成するだけで、それがユニークであることは 保証しません。kahua.sessionモジュールがユニークなIDの作成を 保証します。
[procedure] decompose-gsid gsid
GSID文字列からヘッダ部分とボディ部分を取り出し、 2つの値として返します。
[procedure] gsid->worker-id gsid
GSID文字列からworker idを取り出して返します。gsidが#fの場合には #fを返します。
[procedure] get-gsid-from-header header
メッセージ(プロトコル?参照)のヘッダから、2つのgsid (state gsidとcontinuation gsid)を取り出し、2つの値として返します。 該当するgsidがヘッダに与えられていない場合はその値として#fが返ります。
[procedure] add-gsid-to-header header state-gsid cont-gsid
ヘッダheader (リストのリスト) に、state-gsidで指定される state gsidと、cont-gsidで指定されるcontinuation gsidを設定した ヘッダを返します。headerに既にこれらのgsidが含まれる場合は 新しいものに置き換えられます。
[procedure] worker-id->sockaddr worker-id [sockbase]
worker-idから、そのworker (アプリケーションサーバー) に接続するための <sockaddr>オブジェクトを作成して返します。worker-idに#fを与えると、 スーパバイザサーバーに接続するための<sockaddr>を返します。
返った<sockaddr>をmake-client-socketに与えることで、クライアントソケットを 作成してサーバーに接続することができます。
[procedure] make-worker-id worker-type
workerタイプからworker idを作成します。
[procedure] supervisor-sockaddr [sockbase]
(worker-id->sockaddr #f) と同じで、スーパバイザサーバーに接続するための <sockaddr>を作成して返します。