kahua.gsid

English page

Kahua Release

kahua-web Release

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-idbodyから作成して返します。

この手続きは単に文字列を作成するだけで、それがユニークであることは 保証しません。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>を作成して返します。

Copyright (c) 2003-2007 Kahua Project Contact | About Us