tinykernel
Loading...
Searching...
No Matches
tk::EventHub< MsgType, MaxSubscribers > Class Template Reference

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

#include <actor.hpp>

Static Public Member Functions

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

Detailed Description

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

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

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

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

Member Function Documentation

◆ publish()

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

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

Parameters
msg配信するメッセージ実体 (各 Actor のキューへ値コピー)
Returns
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 をこのメッセージ型の購読者として登録します

Parameters
actorActor インスタンスポインタ
post_fnメッセージ投入関数ポインタ
Returns
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 の購読登録を解除します

Parameters
actor解除する Actor インスタンスポインタ
Returns
true 解除成功, false 未登録

The documentation for this class was generated from the following file:
  • C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/actor.hpp