Files
VideoPipe/nodes/vp_meta_publisher.h
2026-06-03 12:43:14 +08:00

33 lines
834 B
C++
Executable File

#pragma once
#include <memory>
#include <vector>
#include <mutex>
#include <iostream>
#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<vp_objects::vp_meta> meta);
// non-copyable for all child class
std::mutex subscribers_lock;
// next nodes as subscribers
std::vector<std::shared_ptr<vp_meta_subscriber>> subscribers;
public:
vp_meta_publisher(/* args */);
~vp_meta_publisher();
// add next node
void add_subscriber(std::shared_ptr<vp_meta_subscriber> subscriber);
// remove next node
void remove_subscriber(std::shared_ptr<vp_meta_subscriber> subscriber);
};
}