OpenRTM-aist 2.1.0
|
PostFsmActionListener クラス [詳解]
#include <FsmActionListener.h>
公開メンバ関数 | |
virtual | ~PostFsmActionListener () |
デストラクタ | |
virtual void | operator() (const char *state, ReturnCode_t ret)=0 |
仮想コールバック関数 | |
静的公開メンバ関数 | |
static const char * | toString (PostFsmActionListenerType type) |
PostFsmActionListenerType を文字列に変換 | |
PostFsmActionListener クラスは、Fsmのアクションに関するコールバック を実現するリスナーオブジェクトの基底クラスである。FSMのアクション の直後の動作をフックしたい場合、以下の例のように、このクラスを継承 したコールバックオブジェクトを定義し、適切なコールバック設定関数か らRTObjectに対してコールバックオブジェクトをセットする必要がある。
class MyListener : public PostFsmActionListener { std::string m_name; public: MyListener(const char* name) : m_name(name) {} virtual ~MyListener() {} virtual void operator()(const char* state_name, ReturnCode_t ret) { std::cout << "Listner name: " m_name << std::endl; std::cout << "Current state: " state_name << std::endl; }; };
このようにして定義されたリスナクラスは、以下のようにRTObjectに対し て、セットされる。
RTC::ReturnCode_t ConsoleIn::onInitialize() { addPostFsmActionListener(PostFsmActionListenerType::POST_ON_STATE_CHANGE, new MyListener("init listener"), true); :
第1引数の "POST_ON_STATE_CHANGE" は、コールバックをフックするポイン トであり、以下の値を取ることが可能である。なお、すべてのコールバッ クポイントが実装されているとは限らず、これらが呼び出されるかどうか は、FSMの実装に依存する。
第2引数はリスナオブジェクトのポインタである。第3引数はオブジェクト 自動削除フラグであり、true の場合は、RTObject削除時に自動的にリス ナオブジェクトが削除される。falseの場合は、オブジェクトの所有権は 呼び出し側に残り、削除は呼び出し側の責任で行わなければならない。 RTObject のライフサイクル中にコールバックが必要ならば上記のような 呼び出し方で第3引数を true としておくとよい。逆に、コールバックを 状況等に応じてセットしたりアンセットしたりする必要がある場合は falseとして置き、リスナオブジェクトのポインタをメンバ変数などに保 持しておき、 RTObject_impl::addPostFsmActionListener()/removePostFsmActionListener() により、セットとアンセットを管理するといった使い方も可能である。
|
virtual |
デストラクタ
|
pure virtual |
仮想コールバック関数
PostFsmActionListener のコールバック関数
|
inlinestatic |
PostFsmActionListenerType を文字列に変換
PostFsmActionListenerType を文字列に変換する
type | 変換対象 PostFsmActionListenerType |