*SSTP関連ソフトウエア間通信規格(FINE) [#lbfb8ecc]

#contents

SSTP Bottle ClientなどのメッセージングツールにSARSなどのエディタからスクリプトを投げたり、その他色々と関連ソフトウエア間で通信するための規格。~
※名称'FINE(フィーネ)'は特に何かの略称ではなく、SERIKO規格のように名前を当てただけです。~

*用語 [#u3f5308f]

-FINEサーバ~
FINEリクエスト受信側。

-FINEクライアント~
FINEリクエスト送信側。

*サーバ要件 [#kd1d6e64]
**'Fine'FMOの保持 [#x7c7c5c6]

FINEクライアントがFINEサーバの存在を感知し、情報を得るためにFMO'Fine'を保持する。~
FMOへのアクセスはMUTEXによる排他制御が必須である。(制御用MUTEXは'FineFMO')~
FMO書式は次の通り。

***メモリマップ [#gead475e]

-0-3~
全体のサイズを示す long 値

-4-~
データ本体

***本体書式 [#v8c5cb68]

アプリケーション名:プロパティ名:値[cr][lf]~
HWndプロパティ、Capabilityプロパティ及びServerVersionプロパティは必須。
その他のプロパティ名はサブ規格毎に定義される。~
アプリケーション名、プロパティ名、プロパティ値に : 及び @ 記号を用いてはならない。~
終端は0x00とする。0x00が現れた以降のエントリは無効である。~
使用可能な文字コードはShift_JISとする。

例

 TalkCapsule@83908390:HWnd:xxxxxxxx[cr][lf]
 TalkCapsule@83908390:Target:○○(800)[cr][lf]
 TalkCapsule@83908390:Capability:MessageSend[cr][lf]
 TalkCapsule@83908390:ServerVersion:0.2.0.0[cr][lf]
 SSTP Bottle@76607660:HWnd:xxxxxxxx[cr][lf]
 SSTP Bottle@76607660:Target:駅前繁華街[cr][lf]
 SSTP Bottle@76607660:Target:海浜公園街[cr][lf]
 SSTP Bottle@76607660:Capability:MessageSend,SetScript,SetScriptPartial[cr][lf]
 SSTP Bottle@76607660:ServerVersion:2.70[cr][lf]
 BoIP@99999999:HWnd:xxxxxxxxxx[cr][lf]
 BoIP@99999999:Target:ぼとるいぬごや(嘘)[cr][lf]
 BoIP@99999999:Capability:MessageSend[cr][lf]
 BoIP@99999999:ServerVersion:0.83d[cr][lf]
 SARS@37564000:HWnd:xxxxxxxxxx[cr][lf]
 SARS@37564000:Capability:SetScript,SetScriptPartial[cr][lf]
 SARS@37564000:ServerVersion:2.9.1.42087[cr][lf][0x00]

-アプリケーション名~
アプリケーション名は、アプリケーション側での二重起動時のFMO破壊を防止する等の目的で、~
アプリケーション名@固有ID~
という書式を用いてもよい。
クライアント側は、@ 記号を認識して適宜それを分割して認識してもよい。

-Capabilityプロパティ~
Capabilityプロパティには、サーバがどのFINEサブ規格に対応可能かを記述する。~
内容はイベント名からOnFINEを取った形でカンマ区切りで列挙する。

例

 SARS:Capability:SetScript,SetScriptPartial
 BottleClient:Capability:MessageSend,SetScript,SetScriptPartial

-ServerVersionプロパティ~
FINEサーバのバージョン文字列を記述する。

***サイズ [#j9d7cb10]

1024*64B。ただしサイズを示す値があるのでデータ本体で使用可能な領域は1024*64-4B。

**FINEリクエストの処理 [#i615d23a]

WM_COPYDATAによるFINEリクエストを処理し、処理結果を返す。

***ステータスコード [#g254d0d7]

基本的にはSSTPのステータスコードに準拠するが、サブ規格で追加定義されている物がある事を注意せよ。~
書式はVersion Statuscode Statusstring[CRLF](例:NOTIFY/1.0 200 OK)~
また、ステータスラインの後に空行を入れてアプリケーション及びEvent固有の情報を返してもよい。

,コード,状態,解説
,200 OK,正常終了,リクエスト処理は正常に終了した。
,400 Bad Request,処理不能,呼び出しの不備、内容の不一致。リクエストの内容が解釈不能など。
,420 Refuse,拒否,FINEサーバーはそのリクエストを受け付けない
,500 Internal Server Error,サーバエラー,何らかのエラーがメッセージングツール側で発生した
,501 Not Implemented,未実装,実装していないリクエストが来た

*クライアント要件 [#o74a514a]
**FineFMOの解釈 [#f3c51a52]

FMOのアクセスはMUTEXによる排他制御を行う事が推奨されるが、実装は任意である。~
なお、MUTEXによる排他制御を行わない場合は読み込み中にFMOが破壊される事態に備え、文法的に間違ったFMOに対して対処出来るように注意せよ。~
また、FINE''クライアント''は書き込みを行ってはならない。(サーバ機能を兼ね備える場合はサーバ要件に準ずる)

**FINEリクエストの発行 [#r6491502]
発行方法はSSTP(Sakura Script Transfer Protocol)のNOTIFY/1.0形式に順じ、WM_COPYDATAにて行う。~
ソケット接続による発行はサポートしない。

***リクエストヘッダ [#k65ba1ac]

-Sender~
FINEクライアントの名前が入る。必須。

-Event~
サブ規格で定義されるイベント名(OnFINE〜)。必須。
サブ規格で定義されるイベント名(OnFINE~)。必須。

-Charset~
リクエストの文字コード。サポートするのはUTF-8/Shift_JIS/ASCII。必須。

-HWnd~
FINEクライアントのHWnd。必須。

-Reference0-7~
リクエスト内容。どのReferenceが何を意味するのかはサブ規格で定義される。任意。
発行後、FINEサーバから返されるステータスコードに従って適切な処理を行う事。

*サブ規格 [#le914501]

#navi(殊海夕音/FINE)

#newpage(殊海夕音/FINE/)

*リソース [#d16d5f93]

-[[殊海夕音/Delphi用FINEコンポーネント]]

*コメント [#bb08da68]
#comment(below)
- 2004-07-06 (Tue) 01:14:27 ''[[浮子屋]]'' : お騒がせしてすみませんです。
- 2004-07-06 (Tue) 01:12:36 ''[[浮子屋]]'' : やさぐれソフトのTODOに書いて頂いた現象もこれで直ったと思います。
- 2004-07-06 (Tue) 01:11:22 ''[[浮子屋]]'' : どうも 'Sakura' FMO の方も0x00を終端とする(0x00埋めをしない)仕様らしいので、こちらを直しました。
- 2004-07-05 (Mon) 13:08:39 ''[[殊海夕音]]'' : げ、また何かポカやってましたか。コード見直してみます。
- 2004-07-05 (Mon) 04:15:44 ''[[浮子屋]]'' : 0x00をターミネータとするならそういう仕様にするので良いのですが、一旦全部きれいにする(残りを0x00で埋める)仕様だと思っていたので。。。
- 2004-07-05 (Mon) 04:14:32 ''[[浮子屋]]'' : 何故かTC上げ落としするとゴミが残るなーと思っていたら、TCは最後のエントリに0x00一個だけしか書かない(その後古いゴミは残したまま)みたいです。
- 2004-07-04 (Sun) 23:30:33 ''[[浮子屋]]'' : Capabilityと@の扱いを追記しました。
- 2004-07-04 (Sun) 21:56:35 ''[[浮子屋]]'' : なるほど。Capabilityですか。対応してみます。
- 2004-07-04 (Sun) 18:40:18 ''[[殊海夕音]]'' : TC及びSSTP Bottle Client非公式ビルドにCapabilityを実装しました。
- 2004-07-04 (Sun) 17:02:50 ''[[殊海夕音]]'' : ステータスコードに420を追加しました。
- 2004-07-04 (Sun) 13:09:24 ''[[殊海夕音]]'' : Capability、よさそうですね。
- 2004-07-03 (Sat) 20:22:28 ''[[殊海夕音]]'' : ステータスコードに501を追加しました。
- 2004-07-01 (Thu) 20:59:26 ''[[浮子屋]]'' : とりあえずSARS実装しました。
- 2004-06-22 (Tue) 18:12:20 ''[[浮子屋]]'' : ちょこっと直しました。FMOの[cr][lf]と0x00、後NOTIFYのヘッダのHwnd→HWndです。
- 2004-06-22 (Tue) 17:10:22 ''[[殊海夕音]]'' : それではTC側も実装始めます。これでひとまず固めてよろしいでしょうか。
- 2004-06-22 (Tue) 15:47:26 ''[[浮子屋]]'' : ページ作成やらせてしまってすみません。とりあえずこの仕様に従って実装してみます。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS