SophiaFramework UNIVERSE 5.3 |
SFXTask クラスは、 タスク(次回のイベントループ時に呼び出されるコールバック) を扱うためのクラスです。 このクラスは、主に協調的なマルチタスクの処理を実現するときに利用されます。
SFXTask クラスは、以下の手順で使用します。
内部の実装 | |
---|---|
SFXTask クラスは、SFXCallback クラスを利用して実装されています。 タスクのスケジュール(コールバックの登録)は、 内部で BREW API ISHELL_Resume 関数を呼び出して行います。 |
// SFXTask インスタンスはクラスのメンバ変数として定義する class MyClass { private: SFXTask _task; public: Void Function(Void); XALLBACK_DECLARE_SFXTASK(OnTask) }; Void MyClass::Function(Void) { ... // タスクのスケジュールに必要な情報を設定する // ※ OnTask 関数と OnTask 関数に渡すデータ)を設定する _task.Set(XALLBACK_INTERNAL(OnTask)); // タスクをスケジュールする _task.Schedule(); } // 次回イベントループで BREW 環境から呼び出されるコールバック関数 XALLBACK_IMPLEMENT_SFXTASK(MyClass, OnTask) { ... }
コンストラクタ/デストラクタ |
---|
SFXTask( Void ) SFXTask クラスのコンストラクタです。
|
~SFXTask( Void ) SFXTask クラスのデストラクタです。
|
パブリック関数 | |
---|---|
Void |
Cancel( Void ) タスクのスケジュールをキャンセルします。
|
static SFXTaskConstRef |
EmptyInstance( Void ) 空のタスクを取得します。
|
SFXCallback::CallbackSPP |
GetProcedure( Void ) タスクに設定したコールバック関数を取得します。
|
VoidPtr |
GetReference( Void ) タスクに設定したコールバック関数に渡すデータを取得します。
|
Bool |
IsValid( Void ) タスクがスケジュール済みか判定します。
|
SFCError |
Schedule( Void ) タスクをスケジュールします。
|
Void |
Set(
SFXCallback::CallbackSPP spp
, VoidPtr reference
) タスクを設定します。
|
[ public, explicit ] SFXTask(Void);
このコンストラクタは、何も行いません。
[ public ] ~SFXTask(Void);
このデストラクタは、 内部的に SFXTask::Cancel 関数を呼び出し、 タスクのスケジュールをキャンセルします。
[ public ] Void Cancel(Void);
この関数は、 タスクのスケジュール(コールバックの登録)をキャンセルします。
SFXTask::Schedule 関数を使用してスケジュールしたタスクをキャンセルします。 タスクがスケジュールされていない場合は、何も行いません。
Tip | |
---|---|
サスペンド時は、 この関数を呼び出してタスクのスケジュール(コールバックの登録)をキャンセルすることを推奨します。 |
注意 | |
---|---|
この関数は、SFXTask::~SFXTask デストラクタから呼び出されます。 |
注意 | |
---|---|
この関数は、内部で SFXCallback::Cancel 関数を呼び出します。 |
[ public, static ] SFXTaskConstRef EmptyInstance(Void);
[ public, const ] SFXCallback::CallbackSPP GetProcedure(Void);
タスクに設定したコールバック関数
この関数は、 SFXTask::Set 関数を使用してタスクに設定したコールバック関数を取得します。
注意 | |
---|---|
この関数は、内部で SFXCallback::GetProcedure 関数を呼び出します。 具体的には、 このタスクが内部で保持する BREW API AEECallback 構造体の pfnNotify メンバに設定されている値を返します。 |
[ public, const ] VoidPtr GetReference(Void);
タスクに設定したコールバック関数に渡すデータ
この関数は、 SFXTask::Set 関数を使用してタスクに設定したコールバック関数に渡すデータを取得します。
注意 | |
---|---|
この関数は、内部で SFXCallback::GetReference 関数を呼び出します。 具体的には、 このタスクが内部で保持する BREW API AEECallback 構造体の pNotifyData メンバに設定されている値を返します。 |
[ public, const ] Bool IsValid(Void);
この関数は、 このタスクが SFXTask::Schedule 関数を呼び出してスケジュール済みか判定します。
注意 | |
---|---|
この関数は、内部で SFXCallback::IsQueued 関数を呼び出します。 |
[ public ] SFCError Schedule(Void);
この関数は、 SFXTask::Set 関数を使用して設定した、 タスクをスケジュールします(AEE シェルの待機中操作リストにコールバックを登録します)。
タスクがスケジュール済みの場合は、一旦それをキャンセルし、再スケジュールします。
タスクをスケジュールすると、 次回イベントループでタスクに設定されたコールバック関数が呼び出されます。
内部で最初に SFXTask::Cancel 関数を呼び出して一旦タスクをキャンセルし、 更に SFBShell::Resume 関数を呼び出します。
前提条件 | |
---|---|
この関数を呼び出す前に、 SFXTask::Set 関数を使用してタスクを設定しておく必要があります。 |
[ public ] Void Set( SFXCallback::CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
この関数は、スケジューリングのために、 タスク(コールバック関数とコールバック関数に渡すデータ)を設定します。
内部で最初に SFXTask::Cancel 関数を呼び出すので、 この関数を実行する前にスケジュールされていたタスクはキャンセルされます。
注意 | |
---|---|
この関数を実行した後に、 SFXTask::Schedule 関数を呼び出してタスクをスケジュールします(コールバックを登録します)。 |
注意 | |
---|---|
この関数は、内部で SFXCallback::Set 関数を呼び出して、 引数に指定したコールバック関数とコールバック関数に渡すデータを、 このタスクが内部で保持する、 BREW API AEECallback 構造体の pfnNotify メンバと pNotifyData メンバに設定します。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |