操作の概要
以下のセクションでは、Glasswall Embedded Engine を正常に運用するための主要な概念について説明します。
セッション
Application Programming Interface (API) はセッションベースです。セッションは、ファイルと、そのファイルを処理するために使用される仕組みを表す型です。
- You create a Session object by calling
GW2OpenSessionwhich returns a session handle.- 複数のセッションがアクティブになる場合があるため、特定のセッションのデータにアクセスし、変数を設定するには
Session IDを使用します。
- 複数のセッションがアクティブになる場合があるため、特定のセッションのデータにアクセスし、変数を設定するには
- セッションハンドルを他の API 関数に渡して、入力と出力、および入力と出力の形式(メモリまたはファイル)を登録します。
- その後、関数
GW2RunSessionを呼び出してファイルを処理し、GW2CloseSessionを呼び出してセッションを閉じます。
各セッションは、オープンされると、そのセッション専用の一連のメモリバッファが割り当てられます。これらのバッファは、セッションが開いている限りアクセス可能です。セッションが閉じられると、データは利用できなくなり、割り当てられたメモリは解放されます。
セッションは必ず閉じる必要があります。これには、処理上の問題が発生し、想定された処理フローが中断された場合も含まれます。このような場合には、リソース管理を目的としたさまざまな防御的コーディングパターンを採用できます。たとえば、Java の try-with-resources や、Python の context-handlers です。
注意:同時に開いているセッション数が多いほど、全体のメモリ要件は大きくなります。複数スレッドを使用したファイル処理はサポートされていません。並列処理を実現するには、複数のプロセスを生成することを推奨します。
- Protect / Analysis モード
- Export モード
- Import モード
ユースケース: ファイルを安全化すること、および/またはファイルの内容を説明するレポートを生成すること

ユースケース: 外部での追加処理を可能にするため、ファイルの内容を xml に正規化すること

ユースケース: エクスポートされた xml コンテンツを元のファイル形式に再構成すること

Embedded Engine API の詳細情報は、関連するAPI 関数ページに記載されています。
policy ファイル
policy ファイルは、Glasswall が提供されたファイルをどのように処理するかを決定するために使用されます。サンプルの policy ファイルは Embedded Engine のリリースパッケージに含まれています。
Glasswall の実行に policy file は必須ではありませんが、ほとんどの場合、要件に合わせて処理をカスタマイズするために使用されます。policy file を使用する場合は、各セッションに登録する必要があります。
policy file が指定されていない場合、コンテンツ管理設定はデフォルトでファイルを sanitise するように設定されます。sysConfig オプションにもデフォルト設定が適用されます。
詳細については、Content Management および System Configuration を参照してください。
Glasswall からの戻り値
Glasswall API 内のほとんどの関数は、成功または失敗を示す整数を返します。0 または 1 は成功を示し、負の数(-1 など)は失敗を示します。
一部の API 呼び出しはこのパターンに従いません。たとえば、GW2OpenSession 関数は、-1 のエラー、または新しく作成されたセッションの ID(正の整数)のいずれかを返します。戻り値の表は、API Overview ページで確認できます。
データ管理
Glasswall は、ファイルおよび/またはバッファを使用してデータを処理し、保存します。これらの処理におけるデータ要件は、以下のセクションで説明します。
ファイル
ファイルベースの Glasswall API 呼び出しでは、パラメータとしてファイルパスが必要です。このファイル名は、C 型文字列、つまり NULL 文字で終端された文字配列としてエンコードする必要があります。UTF-8 エンコーディングを使用してください。
メモリ
メモリベースの Glasswall API 呼び出しでは、1 つ以上のメモリバッファを使用する必要があります。これらのバッファは、先頭要素へのポインタと、バッファ長(バイト単位)によって定義されます。この方法により、NULL 文字を含むファイルも正しく処理できます。
Import/Input 関数
これらの関数では、バッファ内の最初のデータへのポインタと、バッファ長(バイト単位)が必要です。
Export/Output 関数
これらの関数では、処理済みデータを返す際に Glasswall が使用するバッファを指定します。以下で説明するように、Glasswall ではバッファ長へのポインタと先頭要素へのポインタの両方が必要です。
- バッファの最初の要素へのポインタへのポインタ
- バッファの長さへのポインタ (size_t *)
この追加の抽象化レイヤーは、このバッファのサイズがセッション実行前には不明であるため必要です。これらのポインタをデリファレンスすることで、Glasswall から返されたデータにアクセスできます。