プロトコルの概要
これまでのESTP/0.1, ESTP/0.2, ESTP/0.3プロトコルを一つにまとめ、微妙に互換性を失ったもの。
動作の概要
これまでの基本部分の概要については、ESTP/0.1, ESTP/0.2, ESTP/0.3を参照。
ESTP/1.0は、以下のような仕様とする。
- 最初のgreeting文字列は"ESTP/1.0\r\n"とする。
- ESTPクライアントは、まずgreeting文字列を送信し、次に「内部に改行(CR, LF, CRLF)を含まない、一つのS式」を送り、その直後にCRLFを送り、その後にstdin/stdout転送モードに入る。
- サーバはまずgreeting文字列を確認し、次の一行(つまり、次の改行まで)を読み取り、それを「一つのS式」として解釈し、その後にstdin/stdout転送モードに入る。
- 「一つのS式」の直後に改行が入る点がESTP/0.x系とは違う事に注意する。
- これまでのESTPがS式を送った後に改行が無い為、目デバッグしにくかった反省から、このような仕様にする事にした。
- この「一つのS式」は、Gaucheのkeywords形式のlistであるとする。但し、keywordの指し示すデータの内容は、例によって不完全文字列かも知れない点に注意する事。具体的なkeywordの詳細については以下の通り。
- :env alist
- www.cgiモジュールのcgi-metavariables形式のalistで渡される、環境変数、またはそれに類する値。
- もしこのkeywordが存在しない場合は、'()が指定されたものとして扱われる。
- :args list
- 通常のmain手続きに与えられるargs的なlist(またはそれに類する値)。第一要素はインタープリタのpathかスクリプトのpathかのどちらか(つまり、クライアントを識別する何らかのpath文字列という事)。
- もしこのkeywordが存在しない場合は、'("インタープリタ名")が指定されたものとして扱われる。この「"インタープリタ名"」はサーバ側の設定により任意の文字列が与えられるものとする。
- :ext alist
- その他のメタデータを送信したい際に用いるrfc.822形式のalist。
- もしこのkeywordが存在しない場合は、'()が指定されたものとして扱われる。
備考
まだ仕様策定中なので、今後、更なるkeywordが追加される可能性有り。
最終更新 : 2007/02/28 23:48:28 JST