[Glue!] Glue Logic プロトコル仕様 (ASCII Version 0)


このプロトコルは ASCII 文字列を基本とする。 全てのトランザクションは単独の行から構成される。 すなわち、データグラム中の改行文字は最後に一つだけ存在できる。
データグラムは8進 034 の文字でいくつかの部分に分けられ、 それぞれの部分は各々一つの操作を含む。

トランザクションの戻り値も単独の行のみから構成され、 8進 034 の文字でいくつかの部分要素に分ける事ができる。
もしもトランザクション中に エラーメッセージや診断メッセージが発生した場合には、 最初の部分要素に発生したメッセージが含まれる。 このメッセージは必ず ! 文字で始められる。
以降の部分要素には送信した操作に対応した順番で、 各操作の戻り値が含まれる。 戻り値は操作毎にいくつ生成されるかは必ずしも一定ではないが、 戻り値の順番が逆転する事は無い。


操作の表現形式

各操作は次のうちのひとつの形式を取る。
NameToBeAssigned=Value
NameToBeRefered?
NameToBeTested:ExpectedValue
!OperationMnemonic

最初の形式は、クライアントが名前に新しい値を与える場合に使われる。
二番目の形式は、クライアントが名前の値を参照したい場合に使われる。
三番目の形式は、排他制御などを行なう場合に、 名前の値を更新する条件を指定する目的で、 最初の形式の操作の前に指定される。
以上の操作については、 指定されたそれぞれの名前に関する現在の値 (最初の形式にあっては変更後の値)が返される。

最後の形式は、データのやりとり以外の、データ管理などの制御の目的に用いられ、 データグラムの先頭の操作として指定されていなければならない。 ニモニックの後に、ブランクで区切られたいくつかのパラメータが続く場合もある。
この形式で表現される操作を行なった時は、 戻り値としてはニモニック毎に定義された形式のデータが返る。


値の表現形式

値は以下のように表現される。
#Integer
$FloatingPoint
"CharacterString
@Link
%Expression
UNBOUND
データの型は最初の文字で示され、その値は二文字目以降に ASCII 表現で示される。

これらのデータは以下の属性の値として指定する事ができる。
'Value 'Control 'IfTriggered

この他の属性は文字列を値として取り、型を示す文字を先頭につける必要はない。


名前の表現

名前はピリオドで区切られた任意の個数の識別子の列である。 識別子は任意の個数の英数字から構成される文字列である。 しかし、名前の先頭の文字だけは英字でなければならない。

名前は名前空間の中で階層構造を構成し、これらを取り扱う操作も用意されている。

名前の属性は、名前の後にアポストロフィーで区切って属性を示す識別子を繋げる事で表現する。

システム専用に使う名前

以下に示すいくつかの名前はシステムの制御などの目的であらかじめ予約されている。

操作

この版では以下に示す操作が定義されている。
InitiateChannel Hostname:Portnumber ClientId
Glue Logic のサーバ・クライアント間の通信路を開設する。 最初のパラメータはクライアントのメッセージ受信ポートの指定を Hostname:Portnumber の形式で示す。 最後のパラメータはクライアントの識別名を示す。
DisconnectChannel
Glue Logic のサーバ・クライアント間の通信路を閉鎖する。
TerminateServerOperation
サーバを停止する。

AddInformTo Name Client/InformMode/InformText
Client を Name の通知先リストに加える。 この時同時に、 通知を行なう契機と通知に用いる文字列 を指定することができる。 サーバからはその瞬間の Name の値が返る。
DelInformTo Name Client/InformMode/InformText
Client を Name の通知先リストから削除する。 通知を行なう契機と通知に用いる文字列とが与えられていた場合には、 それらも併せて指定しなければならない。 サーバからはその瞬間の Name の値が返る。
AddTriggers Source Destination
Destination という名前を、 Source という名前が変更された時にトリガされるものとして登録する。
DelTriggers Source Destination
Destination という名前を、 Source という名前が変更された時にトリガされるものから削除する。
AddCondition Name Expr TriggeredBy ...
Expr を名前 Name がトリガされた時に実行されるものとして定義し、 この名前をトリガする名前のリストを TriggeredBy ... で登録する。
DelCondition Name
名前 Name に定義された式と、 この名前をトリガする全ての名前の登録を抹消する。

QueryFullName
Glue Logic の定義された全ての名前とその値を返す。
QueryRootName
Glue Logic に定義された全ての名前の最初の識別子のリストを返す。
QueryVariant Stem
Stem ではじまる名前の、Stem に続く識別子のリストを返す。
QueryDescendant Stem
Stem ではじまる全ての名前のリストを返す。
GetDescendant Stem
Stem ではじまる全ての名前の値のリストを返す。
QueryExistence Name
名前 Name が定義されていればその名前を返す。そうでなければ '' を返す。
QueryAttribute Name
名前 Name の持つ属性のリストを返す。

SaveContents SnapshotId
Glue Logic の内部データベースの内容をファイルに退避する。 Not Implemented Yet.
LoadContents SnapshotId
ファイルに退避された内部データベースの内容を回復する。 Not Implemented Yet.

 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]