classtk_1_1_event_hub.md 3.1 KB


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


tk::EventHub

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

#include <actor.hpp>

Public Functions

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

Detailed Description

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

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

Template Parameters:

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

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

Public Functions Documentation

function subscribe

static inline bool subscribe(
    void * actor,
    bool(*)(void *, const MsgType &) post_fn
)

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

Parameters:

  • actor Actor インスタンスポインタ
  • post_fn メッセージ投入関数ポインタ

Return: true 登録成功, false 購読者上限に達した

function unsubscribe

static inline bool unsubscribe(
    void * actor
)

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

Parameters:

  • actor 解除する Actor インスタンスポインタ

Return: true 解除成功, false 未登録

function publish

static inline size_t publish(
    const MsgType & msg
)

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

Parameters:

  • msg 配信するメッセージ実体 (各 Actor のキューへ値コピー)

Return: size_t 配信に成功した Actor の数

function subscriber_count

static inline size_t subscriber_count()

現在の購読者数を取得


Updated on 2026-10-02 at 14:01:32 +0900