前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXTask
タスクの操作を行うクラスです。
#include <SFXTask.h.hpp>
class SFXTask;
SFMTYPEDEFCLASS(SFXTask)

協調図

SFXTask クラスの協調図

解説

SFXTask クラスは、 タスク(次回のイベントループ時に呼び出されるコールバック) を扱うためのクラスです。 このクラスは、主に協調的なマルチタスクの処理を実現するときに利用されます。

SFXTask クラスは、以下の手順で使用します。

  1. SFXTask::Set 関数を呼び出してタスクの情報(コールバック関数とコールバック関数に渡すデータ)を設定します。
  2. SFXTask::Schedule 関数を呼び出してタスクをスケジュールします(コールバックを AEE シェルに登録します)。
  3. 次回のイベントループで登録されたコールバックが呼び出されます。
  4. コールバックが呼び出されるまでに SFXTask::Cancel 関数を呼び出すと、 スケジュールされていたタスク(コールバックの登録)はキャンセルされます。
[Note] 内部の実装

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) 
{

    ...
}

参照

BREW API ISHELL_Resume | SFXCallback | SFXTimer

メンバ

コンストラクタ/デストラクタ
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 )
タスクを設定します。

SFXTask::SFXTask
SFXTask クラスのコンストラクタです。
[ public, explicit ]
SFXTask(Void);

解説

このコンストラクタは、何も行いません。


SFXTask::~SFXTask
SFXTask クラスのデストラクタです。
[ public ]
~SFXTask(Void);

解説

このデストラクタは、 内部的に SFXTask::Cancel 関数を呼び出し、 タスクのスケジュールをキャンセルします。

参照

SFXTask::Cancel | SFXTask::Schedule


SFXTask::Cancel
タスクのスケジュールをキャンセルします。
[ public ]
Void Cancel(Void);

解説

この関数は、 タスクのスケジュール(コールバックの登録)をキャンセルします。

SFXTask::Schedule 関数を使用してスケジュールしたタスクをキャンセルします。 タスクがスケジュールされていない場合は、何も行いません。

[Tip] Tip

サスペンド時は、 この関数を呼び出してタスクのスケジュール(コールバックの登録)をキャンセルすることを推奨します。

[Note] 注意

この関数は、SFXTask::~SFXTask デストラクタから呼び出されます。

[Note] 注意

この関数は、内部で SFXCallback::Cancel 関数を呼び出します。

参照

SFXTask::Schedule | SFXTask::~SFXTask | SFXCallback::Cancel


SFXTask::EmptyInstance
空のタスクを取得します。
[ public, static ]
SFXTaskConstRef EmptyInstance(Void);

解説

この関数は、空のタスクを表すインスタンスを取得します。

[Note] 注意

空のコールバックは、SFXTask::SFXTask コンストラクタの実行直後の状態と同じです。

参照

SFXTask::SFXTask


SFXTask::GetProcedure
タスクに設定したコールバック関数を取得します。
[ public, const ]
SFXCallback::CallbackSPP GetProcedure(Void);

戻り値

タスクに設定したコールバック関数

解説

この関数は、 SFXTask::Set 関数を使用してタスクに設定したコールバック関数を取得します。

[Note] 注意

この関数は、内部で SFXCallback::GetProcedure 関数を呼び出します。

具体的には、 このタスクが内部で保持する BREW API AEECallback 構造体の pfnNotify メンバに設定されている値を返します。

参照

SFXTask::Set | SFXTask::GetReference | SFXCallback::GetProcedure | BREW API AEECallback


SFXTask::GetReference
タスクに設定したコールバック関数に渡すデータを取得します。
[ public, const ]
VoidPtr GetReference(Void);

戻り値

タスクに設定したコールバック関数に渡すデータ

解説

この関数は、 SFXTask::Set 関数を使用してタスクに設定したコールバック関数に渡すデータを取得します。

[Note] 注意

この関数は、内部で SFXCallback::GetReference 関数を呼び出します。

具体的には、 このタスクが内部で保持する BREW API AEECallback 構造体の pNotifyData メンバに設定されている値を返します。

参照

SFXTask::Set | SFXTask::GetProcedure | SFXCallback::GetReference | BREW API AEECallback


SFXTask::IsValid
タスクがスケジュール済みか判定します。
[ public, const ]
Bool IsValid(Void);

戻り値

  • スケジュールされているとき: true
  • そうでないとき: false

解説

この関数は、 このタスクが SFXTask::Schedule 関数を呼び出してスケジュール済みか判定します。

[Note] 注意

この関数は、内部で SFXCallback::IsQueued 関数を呼び出します。

参照

SFXTask::Schedule | SFXCallback::IsQueued


SFXTask::Schedule
タスクをスケジュールします。
[ public ]
SFCError Schedule(Void);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 内部で SFBShell インスタンスの取得に失敗したとき: SFERR_FAILED

解説

この関数は、 SFXTask::Set 関数を使用して設定した、 タスクをスケジュールします(AEE シェルの待機中操作リストにコールバックを登録します)。

タスクがスケジュール済みの場合は、一旦それをキャンセルし、再スケジュールします。

タスクをスケジュールすると、 次回イベントループでタスクに設定されたコールバック関数が呼び出されます。

内部で最初に SFXTask::Cancel 関数を呼び出して一旦タスクをキャンセルし、 更に SFBShell::Resume 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXTask::Set 関数を使用してタスクを設定しておく必要があります。

参照

SFXTask::Set | SFXTask::Cancel | SFXTask::IsValid | SFBShell | BREW API ISHELL_Resume


SFXTask::Set
タスクを設定します。
[ public ]
Void Set(
    SFXCallback::CallbackSPP spp   // コールバック関数
    VoidPtr reference              // コールバック関数に渡すデータ(参照値)
);

解説

この関数は、スケジューリングのために、 タスク(コールバック関数とコールバック関数に渡すデータ)を設定します。

内部で最初に SFXTask::Cancel 関数を呼び出すので、 この関数を実行する前にスケジュールされていたタスクはキャンセルされます。

[Note] 注意

この関数を実行した後に、 SFXTask::Schedule 関数を呼び出してタスクをスケジュールします(コールバックを登録します)。

[Note] 注意

この関数は、内部で SFXCallback::Set 関数を呼び出して、 引数に指定したコールバック関数とコールバック関数に渡すデータを、 このタスクが内部で保持する、 BREW API AEECallback 構造体の pfnNotify メンバと pNotifyData メンバに設定します。

参照

SFXTask::Schedule | SFXTask::Cancel | SFXTask::GetProcedure | SFXTask::GetReference | SFXCallback::Set | BREW API AEECallback