#pragma once #include #include #include #include #include "vp_meta_subscriber.h" namespace vp_nodes { class vp_meta_publisher { private: protected: // push meta to next nodes virtual void push_meta(std::shared_ptr meta); // non-copyable for all child class std::mutex subscribers_lock; // next nodes as subscribers std::vector> subscribers; public: vp_meta_publisher(/* args */); ~vp_meta_publisher(); // add next node void add_subscriber(std::shared_ptr subscriber); // remove next node void remove_subscriber(std::shared_ptr subscriber); }; }