tinykernel
読み取り中…
検索中…
一致する文字列を見つけられません
tk::EventHub< MsgType, MaxSubscribers > クラステンプレート

メッセージ型ごとの超軽量 Pub/Sub ディスパッチャ [詳解]

#include <actor.hpp>

静的公開メンバ関数

static bool subscribe (void *actor, bool(*post_fn)(void *, const MsgType &))
 Actor をこのメッセージ型の購読者として登録します
static bool unsubscribe (void *actor)
 Actor の購読登録を解除します
static size_t publish (const MsgType &msg)
 このメッセージ型を購読しているすべての Actor へ同報配信します
static size_t subscriber_count ()

詳解

template<typename MsgType, size_t MaxSubscribers = 4>
class tk::EventHub< MsgType, MaxSubscribers >

メッセージ型ごとの超軽量 Pub/Sub ディスパッチャ

テンプレート引数 MsgType ごとにコンパイル時解決される静的レジストリです。 実行時の型検索オーバーヘッドゼロ、動的メモリ確保ゼロで動作します。

テンプレート引数
MsgType配信するメッセージの型
MaxSubscribers同一メッセージ型を購読できる最大 Actor 数 (デフォルト: 4)

関数詳解

◆ publish()

template<typename MsgType, size_t MaxSubscribers = 4>
size_t tk::EventHub< MsgType, MaxSubscribers >::publish ( const MsgType & msg)
inlinestatic

このメッセージ型を購読しているすべての Actor へ同報配信します

引数
msg配信するメッセージ実体 (各 Actor のキューへ値コピー)
戻り値
size_t 配信に成功した Actor の数

◆ subscribe()

template<typename MsgType, size_t MaxSubscribers = 4>
bool tk::EventHub< MsgType, MaxSubscribers >::subscribe ( void * actor,
bool(* post_fn )(void *, const MsgType &) )
inlinestatic

Actor をこのメッセージ型の購読者として登録します

引数
actorActor インスタンスポインタ
post_fnメッセージ投入関数ポインタ
戻り値
true 登録成功, false 購読者上限に達した

◆ subscriber_count()

template<typename MsgType, size_t MaxSubscribers = 4>
size_t tk::EventHub< MsgType, MaxSubscribers >::subscriber_count ( )
inlinestatic

現在の購読者数を取得

◆ unsubscribe()

template<typename MsgType, size_t MaxSubscribers = 4>
bool tk::EventHub< MsgType, MaxSubscribers >::unsubscribe ( void * actor)
inlinestatic

Actor の購読登録を解除します

引数
actor解除する Actor インスタンスポインタ
戻り値
true 解除成功, false 未登録

このクラス詳解は次のファイルから抽出されました:
  • C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/actor.hpp