AM Daemon ライブラリリファレンス
|
Daemonライブラリのコア処理を提供するMonostateクラス。 [詳解]
#include <Core.h>
公開メンバ関数 | |
const wchar_t * | getLibraryVersion () const |
ライブラリバージョンを表す文字列を取得する。 [詳解] | |
void | execute () |
Daemonライブラリの更新処理を行う。 [詳解] | |
bool | isReady () const |
Daemonプロセスの主要な初期化が完了したか否かを取得する。 [詳解] | |
void | kill (NextProcess nextProcess=NextProcess::Auto) |
Daemonプロセスを終了させる。 [詳解] | |
void | kill (bool errorOnSegaBoot) |
[非推奨] Daemonプロセスを終了させる。 [詳解] | |
bool | isExited () const |
Daemonプロセスが終了済みであるか否かを取得する。 [詳解] | |
std::size_t | getPlayerCount () const |
プレイヤー数を取得する。 [詳解] | |
void | setExceptionHook (std::function< void(const Exception &)> hook) |
例外をスローする代わりに呼び出される例外フック関数を設定する。 [詳解] | |
void | resetExceptionHook () |
例外フック関数を解除し、例外がスローされるようにする。 [詳解] | |
const wchar_t * | getLanguage () const |
現在設定されている言語名を取得する。 [詳解] | |
bool | changeLanguage (const wchar_t *language) |
言語名の設定と関連リソースのロードを要求する。 [詳解] | |
void | reboot () |
ハードウェアリセットを行う。 [詳解] | |
RequestState | preloadDataSection () |
アプリおよび依存DLLの .data セクションを事前ロードする。 [詳解] | |
Daemonライブラリのコア処理を提供するMonostateクラス。
const wchar_t* amdaemon::Core::getLibraryVersion | ( | ) | const |
ライブラリバージョンを表す文字列を取得する。
amdaemon.lib のバージョンを表す libver 形式の文字列を返す。 ただし前後の改行は除く。
例えば "amdaemonLib Ver.1987 Build:Apr 5 2017 10:01:23" といった文字列になる。
アプリのデバッグ表示やログ出力にそのまま用いることを想定している。
void amdaemon::Core::execute | ( | ) |
Daemonライブラリの更新処理を行う。
アプリのメインループ処理内で毎フレーム呼び出すこと。
bool amdaemon::Core::isReady | ( | ) | const |
Daemonプロセスの主要な初期化が完了したか否かを取得する。
true | 初期化完了している場合。 |
false | 初期化未完了であるが、Daemonプロセスが起動していない場合。 |
下記のタイミングにおいて、この関数が true を返すまで待機すること。
ただしDaemonプロセスが生存していない場合、この関数は true を返さず、 メンバ関数 isExited が true を返す。
void amdaemon::Core::kill | ( | NextProcess | nextProcess = NextProcess::Auto | ) |
Daemonプロセスを終了させる。
[in] | nextProcess | アプリ終了後の遷移先。既定値は NextProcess::Auto 。 |
この関数を呼び出した後は速やかにアプリを終了させること。 Core クラスのアプリ終了フローに関する説明も参照すること。
アプリ都合での再起動を行いたい場合、この関数ではなくメンバ関数 reboot によるハードウェアリセットを行うこと。
Daemonプロセス起動直後など、 Daemonプロセスの準備が完了していないタイミングで呼び出した場合、 最長で20秒程度ブロッキングする場合がある。
エミュレータ環境で呼び出した場合、エミュレータが終了するのみである。
void amdaemon::Core::kill | ( | bool | errorOnSegaBoot | ) |
[非推奨] Daemonプロセスを終了させる。
[in] | errorOnSegaBoot | 現在 Error クラスにエラーが設定されている場合に、 そのエラーをセガブートで表示させるように設定するならば true 。 |
現在 Error クラスにエラーが設定されており、 かつ引数 errorOnSegaBoot に true を指定した場合、 kill(NextProcess) オーバロードの引数に NextProcess::SegaBootError を指定した場合と同一の挙動となる。
上記の条件を満たさない場合、 kill(NextProcess) オーバロードの引数に NextProcess::Auto を指定した場合と同一の挙動となる。
bool amdaemon::Core::isExited | ( | ) | const |
std::size_t amdaemon::Core::getPlayerCount | ( | ) | const |
void amdaemon::Core::setExceptionHook | ( | std::function< void(const Exception &)> | hook | ) |
例外をスローする代わりに呼び出される例外フック関数を設定する。
[in] | hook | フック関数。 |
この関数でフック関数(コールバック)を設定すると、以降ライブラリ内部で例外が 発生した時、それをスローするのではなくフック関数に渡すようになる。
フック関数内で明示的にスローしない限り、例外発生元からもスローされない。 スローされなくなった場合の挙動は例外カテゴリに依存する。 詳細は各 ExceptionCategory 列挙値の説明を参照すること。
フック関数には、第1引数に Exception オブジェクト参照を受け取る関数もしくは 関数オブジェクトを指定できる。 任意のクラスのメンバ関数を指定したい場合はラムダ式を用いるとよい。
void amdaemon::Core::resetExceptionHook | ( | ) |
const wchar_t* amdaemon::Core::getLanguage | ( | ) | const |
現在設定されている言語名を取得する。
bool amdaemon::Core::changeLanguage | ( | const wchar_t * | language | ) |
言語名の設定と関連リソースのロードを要求する。
[in] | language | 言語名。設定ファイルの内容を適用するならば nullptr 。 |
true | 処理に成功した場合。 |
false | 処理に失敗した場合。 |
Exception | 引数 language の文字数が 0 文字または 16 文字以上である場合。 |
関連リソースのロードに1箇所でも失敗した場合は処理に失敗する。 その場合、言語名は変更されない。
引数 language に nullptr を渡した場合に選択される言語名は Daemonプロセスの設定ファイルでの指定に準ずる。 Daemonプロセスの初期化時にも自動で選択されるため、 既定の言語をそのまま用いるのであればこの関数を呼び出す必要はない。
Daemonプロセスが処理完了するまで呼び出し元スレッドをブロックする。 リソースのロードに数秒掛かる可能性があるため、頻繁に呼び出さないこと。
void amdaemon::Core::reboot | ( | ) |
ハードウェアリセットを行う。
ハードウェアリセットを行う。Windowsの再起動とは異なるので注意。
処理に成功した場合、この関数からは復帰しない。
下記の場合はこの関数から復帰する。
処理失敗の主な原因としてはDaemonプロセスが異常終了した場合等が考えられるが、 基本的には Error クラスによりエラーが通知されているはずである。
NET配信やLANインストールによるセガブート遷移要求に対応する場合は、 この関数ではなくメンバ関数 kill を用いること。 詳しくは Core クラスのアプリ終了フローに関する説明を参照すること。
RequestState amdaemon::Core::preloadDataSection | ( | ) |
アプリおよび依存DLLの .data セクションを事前ロードする。
このライブラリをリンクしているアプリ、およびそれが依存しているDLLの .data セクションを事前ロードする。
この関数の呼び出し自体は即座に完了し、要求状態値を返す。 RequestState クラスの各メンバ関数により、 Daemonプロセスが処理完了済みか否かや処理の成否等を調べることができる。
ただし、下記のいずれかを満たす場合、この関数は無効な要求状態値を返す。
無効な要求状態値が返ってきた場合、要求は発行されていない。 有効であるか否かは RequestState クラスのメンバ関数 RequestState::valid で判別できる。
この関数の処理中はDaemonプロセスがブロッキングされるため、 同時に別のAM関連処理を行うことはできない。 また、アプリのフレームレートが安定しない可能性がある。
上記の理由から、アプリの初期化シーケンスにおいてメンバ関数 isReady が true を返すようになった直後にこの関数を呼び出し、 処理完了までアプリでは簡易的な画面表示に留めることが望ましい。
エミュレータ環境で呼び出した場合、処理は成功となるが、内部的には何も行われない。