VnanoEngine クラス仕様書
(org.vcssl.nano.VnanoEngine)


概要

Vnanoのスクリプトエンジン(Vnanoエンジン)のクラスです。

公開コンストラクタ/フィールド/メソッド等の一覧

VnanoEngine()
標準設定のVnanoエンジンを生成します。
Object executeScript(String script)
引数に指定された式またはスクリプトコードを実行します。
void terminateScript()
現在実行中のスクリプトの処理を、可能な限り早期に放棄して終了させます。
boolean isTerminatorEnabled()
スクリプトを途中で終了させるための機能(ターミネーター)が、有効化されているかどうかを返します。
void resetTerminator()
terminateScript() メソッドによって終了させたエンジンを、再び(新規)スクリプト実行可能な状態に戻します・
void connectPlugin(String bindingName, Object plugin)
外部関数/変数を提供する、各種のプラグインを接続します。
void disconnectAllPlugins()
全てのプラグインの接続を解除します。
void includeLibraryScript(String libraryScriptName, String libraryScriptContent)
実行対象スクリプトの先頭に "include" される, ライブラリスクリプトを追加します。
void unincludeAllLibraryScripts()
全てのライブラリスクリプトの include 登録を解除します。
void setOptionMap(Map<String,Object> optionMap)
オプションの名前と値を格納するマップ(オプションマップ)によって、オプションを設定します。
boolean hasOptionMap()
「getOptionMap() メソッドがマップを返せるかどうか」を判定します。
Map<String,Object> getOptionMap()
オプションの名前と値を格納するマップ(オプションマップ)を取得します。
void setPermissionMap(Map<String,String> permissionMap)
パーミッション項目の名前と値を格納するマップ(パーミッションマップ)によって、各パーミッションの値を設定します。
boolean hasPermissionMap()
「getPermissionMap() メソッドがマップを返せるかどうか」を判定します。
Map<String,String> getPermissionMap()
パーミッション項目の名前と値を格納するマップ(パーミッションマップ)を取得します。
boolean hasPerformanceMap()
「getPerformanceMap() メソッドがマップを返せるかどうか」を判定します。
Map<String,Object> getPerformanceMap()
パフォーマンスモニタの計測項目名と値を格納するマップ(パフォーマンスマップ)を取得します。

公開コンストラクタ

名前 VnanoEngine
宣言形式 VnanoEngine()
機能 標準設定のVnanoエンジンを生成します。
引数 なし
戻り値 生成されたインスタンス

公開フィールド

- なし -

公開メソッド

名前 executeScript
宣言形式 Object executeScript(String script) throws VnanoException
機能

引数に指定された式またはスクリプトコードを実行します。

なお、同一インスタンスにおけるこのメソッドを複数のスレッドから呼び出し、 複数のスクリプトを同時に(並行して)実行する事には対応していません。 そのような並列処理を行いたい場合には、スレッドごとに独立なエンジンのインスタンスを生成して使用してください。

引数 script: 実行対象の式またはスクリプトコード。
戻り値 式、またはスクリプトコード内の最後の式文の評価値(もしも評価値が無かった場合は null が返されます)
例外 VnanoException: スクリプトの内容または実行過程にエラーが検出された場合にスローされます。
名前 terminateScript
宣言形式 void terminateScript()
機能

現在実行中のスクリプトの処理を、可能な限り早期に放棄して終了するようリクエストします。

より正確には、スクリプトからコンパイルされた命令列を処理している、エンジン内のVMが、 現在実行中の命令(1個)の処理が完了した時点で、残りの命令列の実行を放棄して終了します。

なお、このメソッドを呼び出して実行を終了させた後に、再び(新規に)スクリプトを実行する際には、事前に resetTerminator() メソッドを呼び出す必要があります。 前者の呼び出しから後者の呼び出しまでの間、実行が要求されたスクリプトはすぐに終了します。

上記の仕様により、このメソッドの呼び出しと新規実行リクエストが、 別スレッドからシビアに競合したタイミングで行われた場合においても、 (終了前に resetTerminator() が呼ばれない限り) スクリプトは確実に終了します。

引数 なし
戻り値 なし
例外

VnanoFatalException (非検査例外): isTerminatorEnabled() メソッドが false を返す状態で、このメソッドがコールされた場合にスローされます。

なお、スクリプトの終了時に通常発生し得る例外(プラグインの終了時処理の失敗など)については、このメソッド側ではなく、 実行中の executeScript(String script) メソッド側からスローされます。 このメソッドは、終了をリクエストする事自体に失敗した場合に例外をスローします。

名前 isTerminatorEnabled
宣言形式 boolean isTerminatorEnabled()
機能

スクリプトを途中で終了させるための機能(ターミネーター)が、有効化されているかどうかを返します。

内部的には、このメソッドは「 TERMINATOR_ENABLED 」オプションの設定値を読んで返します。

このメソッドが true を返す場合には、 terminateScript(String script) メソッドや resetTerminator() メソッドが利用可能です。

なお、このメソッドが true を返す場合であっても、終了処理において何らかのエラーは生じ得る事にご注意ください (例えば、接続されているプラグインが、スクリプト実行毎の終了時処理に失敗する可能性などがあります)。 詳細は、terminateScript(String script) メソッドの例外に関する説明をご参照ください。

引数 なし
戻り値 スクリプトを途中で終了させるための機能(ターミネーター)が、有効化されている場合に true が返されます。
例外 なし
名前 resetTerminator
宣言形式 void resetTerminator()
機能

terminateScript() メソッドによって終了させたエンジンを、 再び(新規)スクリプト実行可能な状態に戻します。

なお、このメソッドの呼び出しと新規実行リクエストが、別スレッドからシビアに競合したタイミングで行われた場合には、 スクリプトは実行されない可能性がある事に留意してください。

引数 なし
戻り値 なし
例外 VnanoFatalException (非検査例外): isTerminatorEnabled() メソッドが false を返す状態で、このメソッドがコールされた場合にスローされます。
名前 connectPlugin
宣言形式 void connectPlugin(String bindingName, Object plugin) throws VnanoException
機能

外部関数/変数を提供する、各種のプラグインを接続します。

引数 bindingName には、接続されるプラグインが提供する変数/関数/名前空間のmスクリプト内での名前を指定します。 内容に空白または「 ( 」が含まれている場合、それ以降は名前としては無視されます。 これにより、例えば関数 "foo" に対して引数部を含めて "foo(int,float)" 等と指定したり (引数部の構文や整合性検査などは行われません)、 同じ名前空間 "Bar" の要素を提供するプラグイン群に対して "Bar 1", "Bar 2", ... のように指定する事ができます。 なお、"___VNANO_AUTO_KEY" を指定する事で, 有効な値の指定を自動で行う事もできます.

また、引数 plugin には、接続したいプラグインを指定します。 一般の Object 型のインスタンスをプラグインとして接続して、 それに属するメソッド/フィールドに、スクリプト内から外部関数/変数としてアクセスする事もできます。 static なメソッド/フィールドのみにアクセスする場合には, Class<T> 型のインスタンスも接続できます。 また、個々のメソッド/フィールドを選んで接続したい場合のために、 Method / Field 型のインスタンスを接続する事もできます。 その際、もしそのフィールド・メソッドが static ではない場合には, 引数 plugin は Object 配列型とし、その [0] 番要素に Field または Method を格納し、 [1] 番要素にそのフィールド・メソッドが定義されたクラスの Class<T> 型インスタンスを格納してください。

なお、XFCI1 等の各種のプラグイン用インターフェースを実装したクラスのインスタンスも接続できます。 パーミッションの管理を行う PACI1 形式のプラグインの接続にも、このメソッドを用います。

引数 bindingName: 接続されるプラグインが提供する変数/関数/名前空間の、スクリプト内での名前。
plugin: 接続したいプラグイン。
戻り値 なし
例外 VnanoException: サポートされていないインターフェースの使用や、データ型の互換性などの原因により、 プラグインの接続に失敗した場合にスローされます。
名前 disconnectAllPlugins
宣言形式 void disconnectAllPlugins() throws VnanoException
機能 全てのプラグインの接続を解除します。
引数 なし
戻り値 なし
例外 VnanoException: プラグインの終了時処理でエラーが発生した場合にスローされます。
名前 includeLibraryScript
宣言形式 void includeLibraryScript(String libraryScriptName, String libraryScriptContent) throws VnanoException
機能 実行対象スクリプトの先頭に "include" される, ライブラリスクリプトを追加します。
引数 libraryScriptName: ライブラリスクリプトの名称 (エラーメッセージ等で使用されます)。
libraryScriptContent: ライブラリスクリプトのコード内容。
戻り値 なし
例外 VnanoException: ライブラリに異常があった場合にスローされます。
名前 unincludeAllLibraryScripts
宣言形式 void unincludeAllLibraryScripts() throws VnanoException
機能 全てのライブラリスクリプトの include 登録を解除します。
引数 なし
戻り値 なし
例外 VnanoException: 現状ではスローされませんが、将来的な互換性維持のためのために catch する必要があります。
名前 setOptionMap
宣言形式 void setOptionMap(Map<String,Object> optionMap) throws VnanoException
機能

オプションの名前と値を格納するマップ(オプションマップ)によって、オプションを設定します。

オプションマップは Map<String,Object> 型で, そのキーはオプション名に対応します。 オプション名と値の詳細については、別途ドキュメントをご参照ください。

引数 optionMap: オプションの名前と値を格納するマップ(オプションマップ)。
戻り値 なし
例外 VnanoException: オプションの指定内容が正しくなかった場合にスローされます。
名前 hasOptionMap
宣言形式 boolean hasOptionMap()
機能 getOptionMap() メソッドがマップを返せるかどうか」を判定します。
引数 なし
戻り値 getOptionMap() メソッドがマップを返せる場合に true が返されます。
例外 なし
名前 getOptionMap
宣言形式 Map<String,Object> getOptionMap()
機能

オプションの名前と値を格納するマップ(オプションマップ)を取得します。

オプションマップは Map<String,Object> 型で、そのキーはオプション名に対応します。 オプション名と値の詳細については、別途ドキュメントをご参照ください。

引数 なし
戻り値 オプションの名前と値を格納するマップ(オプションマップ)。
例外 VnanoFatalException (非検査例外): hasOptionMap() メソッドが false を返す状態で、このメソッドがコールされた場合にスローされます。
名前 setPermissionMap
宣言形式 void setPermissionMap(Map<String, String> permissionMap) throws VnanoException
機能

パーミッション項目の名前と値を格納するマップ(パーミッションマップ)によって、各パーミッションの値を設定します

パーミッションマップは Map<String,String> 型で、そのキーはパーミッション項目の名称に対応します。 パーミッション項目の名称と値の詳細については、別途ドキュメントをご参照ください。

引数 permissionMap: パーミッション項目の名前と値を格納するマップ(パーミッションマップ)。
戻り値 なし
例外 VnanoException: パーミッションの指定内容が正しくなかった場合にスローされます。
名前 hasPermissionMap
宣言形式 boolean hasPermissionMap()
機能 getPermissionMap() メソッドがマップを返せるかどうか」を判定します。
引数 なし
戻り値 getPermissionMap() メソッドがマップを返せる場合に true が返されます。
例外 なし
名前 getPermissionMap
宣言形式 Map<String,String> getPermissionMap()
機能

パーミッション項目の名前と値を格納するマップ(パーミッションマップ)を取得します。

パーミッションマップは Map&String;String,Object> 型で、そのキーはパーミッション項目の名称に対応します。 パーミッション項目の名称と値の詳細については、別途ドキュメントをご参照ください。

引数 なし
戻り値 パーミッション項目の名前と値を格納するマップ(パーミッションマップ)。
例外 VnanoFatalException (非検査例外): hasPermissionMap() メソッドが false を返す状態で、このメソッドがコールされた場合にスローされます。
名前 hasPerformanceMap
宣言形式 boolean hasPerformanceMap()
機能

getPerformanceMap() メソッドがマップを返せるかどうか」を判定します。

内部的には、このメソッドは「 PERFORMANCE_MONITOR_ENABLED 」オプションの設定値を読んで返します。

引数 なし
戻り値 getPerformanceMap() メソッドがマップを返せる場合に true が返されます。
例外 なし
名前 getPerformanceMap
宣言形式 Map<String,Object> getPerformanceMap()
機能

パフォーマンスモニタの計測項目名と値を格納するマップ(パフォーマンスマップ)を取得します。

なお、スクリプトを実行していない時や、実行開始後でも性能を有効に計測可能な段階にまだ達していない時など、 一部の計測値が存在しないタイミングでは、それらの値は戻り値のパフォーマンスマップ内には格納されません。 そのような「欠けた」または「空の」パフォーマンスマップが有り得る事には、計測値を取り出す際に留意する必要があります。

引数 なし
戻り値 パフォーマンスモニタの計測項目名と値を格納するマップ(パフォーマンスマップ)。
例外 VnanoFatalException (非検査例外): hasPerformanceMap() メソッドが false を返す状態で、このメソッドがコールされた場合にスローされます。