src/crdt/globaldb/pubsub_broadcaster.hpp
Namespaces
Classes
Source code
#ifndef SUPERGENIUS_CRDT_PUBSUB_BROADCASTER_HPP
#define SUPERGENIUS_CRDT_PUBSUB_BROADCASTER_HPP
#include "crdt/broadcaster.hpp"
#include "base/logger.hpp"
#include <ipfs_pubsub/gossip_pubsub_topic.hpp>
#include <queue>
namespace sgns::crdt
{
class PubSubBroadcaster : public Broadcaster
{
public:
using GossipPubSub = sgns::ipfs_pubsub::GossipPubSub;
using GossipPubSubTopic = sgns::ipfs_pubsub::GossipPubSubTopic;
PubSubBroadcaster( std::shared_ptr<GossipPubSubTopic> pubSubTopic );
void SetLogger(base::Logger logger)
{
logger_ = std::move(logger);
}
outcome::result<void> Broadcast(const base::Buffer &buff, std::string topic, boost::optional<libp2p::peer::PeerInfo> peerInfo = boost::none) override;
outcome::result<base::Buffer> Next() override;
bool HasTopic(const std::string &topic) override { return true; }
private:
std::shared_ptr<GossipPubSubTopic> gossipPubSubTopic_;
std::queue<std::tuple<libp2p::peer::PeerId, std::string>> listOfMessages_;
base::Logger logger_ = nullptr;
std::mutex mutex_;
};
}
#endif // SUPERGENIUS_CRDT_PUBSUB_BROADCASTER_HPP
Updated on 2026-03-04 at 13:10:44 -0800