SAORI の呼び出し¶
里々は、() の中から SAORI を呼び出せます。
登録¶
satori_conf.txt の @SAORI に、1 行に 1 つ、次の形式で書きます。
@SAORI
呼び出し名,相対パス,定義済み引数1,定義済み引数2,…
| 項目 | 内容 |
|---|---|
| 呼び出し名 | () の中で使う名前 |
| 相対パス | SAORI のファイルの、ゴーストの master フォルダからの相対パス |
| 定義済み引数 | 呼び出しのたびに、先頭に付けて渡す引数(省略可) |
- 同じ呼び出し名を複数登録するとエラーになります。
- 実行中に登録するときは load_saori を使います。
saori/ssu.dllを指定すると、内蔵の ssu が使われます(登録しなくても、ssu の関数名は自動で登録されます)。
種類¶
| 種類 | 条件 | 動作 |
|---|---|---|
| SAORI/1.0(universal) | 拡張子が .dll |
DLL を読み込み、GET Version で SAORI/1.0 を確認して使う |
| SAORI basic | 拡張子が .dll 以外(.exe など) |
実行ファイルを、引数をコマンドラインに並べて起動し、標準出力を結果にする。SecurityLevel が local のときだけ |
呼び出し¶
(呼び出し名、引数1、引数2、…)
- 引数は SAORI 引数の計算の設定によって、先に整数の式として計算されることがあります。
- リクエストの
Argument0から、定義済み引数、()の引数の順に渡されます。 - 結果(
Result)が()の展開結果になり、Value0… は(S0)… に入ります((Sの数)が個数)。 - 結果に
()が含まれていれば、もう一度展開されます。 SecurityLevelは、里々の実行権限(localまたはexternal)を渡します。
通信¶
- 里々から SAORI へは
Charset: UTF-8で送ります。SAORI がloaduをエクスポートしていれば UTF-8 のパスで、なければ従来のloadで呼びます。 GET Versionの応答にCharsetヘッダがない(または空の)SAORI には、Mc203-2以降、ACP 版と同じくCharset: Shift_JISで送ります。華和梨の SAORI モードのように、Charsetヘッダを見ずに Shift_JIS として読む SAORI があるためです。Shift_JIS にない文字(絵文字など)は?になります。GET Versionの応答にCharsetヘッダがない(または空の)SAORI には、Mc201-9以降、直後に何もしないEXECUTE(Argument0が空)を 1 回送り、応答を読み捨てます。YAYA as SAORI の古いayasaori.aymは、GET VersionでCharsetを返さず、その後の最初のEXECUTEだけ文字コードの設定が合わずに文字化けするためです。ayasaori.aymをyaya-as-saoriの現行版に差し替えれば、この呼び出しは行われません。- 応答は、応答の
Charsetヘッダに従って読みます。ヘッダがなければ、Shift_JIS で送った SAORI の応答は Shift_JIS として、それ以外は内容で判定して読みます(Mc203-2以降)。
エラー¶
| ログの内容 | 意味 |
|---|---|
設定ファイルの書式が正しくありません。 |
呼び出し名か相対パスがない |
同じ呼び出し名が複数定義されています。 |
呼び出し名の重複 |
プラグインが存在しません。 |
ファイルがない |
SAORI/1.xのdllの読み込みに失敗しました。 |
読み込みに失敗した |
400 Bad Request / 呼び出しの不備 |
SAORI が 400 を返した |
500 Internal Server Error / saori内でのエラー |
SAORI が 500 を返した |
これらのログは DLLのパス - 呼び出し名 : 内容 の形式です。内蔵の ssu を使っている(saori\ssu.dll のファイルがない)場合、Mc201-6以降は DLL のパスの代わりに (internal ssu) と表示されます。
里々を SAORI として呼び出す¶
satori.dll は、SAORI/1.x のリクエストにも応答できます(Argument0 を ID、Argument1… を Reference0… にして通常と同様に処理し、Result と Value0… で返します)。