23#ifndef _PLUGINS_GOSSIP_GOSSIP_GOSSIP_GROUP_H_
24#define _PLUGINS_GOSSIP_GOSSIP_GOSSIP_GROUP_H_
26#include <google/protobuf/message.h>
27#include <protobuf_comm/peer.h>
29#include <boost/asio.hpp>
30#include <boost/signals2.hpp>
33namespace protobuf_comm {
34class ProtobufBroadcastPeer;
39class ServicePublisher;
41class GossipGroupManager;
50 void send(std::string &
peer, google::protobuf::Message &m);
52 void broadcast(google::protobuf::Message &m);
56 protobuf_comm::MessageRegister &
59 return pb_peer_->message_register();
64 boost::signals2::signal<void(boost::asio::ip::udp::endpoint &,
67 std::shared_ptr<google::protobuf::Message>)> &
70 return pb_peer_->signal_received();
75 boost::signals2::signal<void(boost::asio::ip::udp::endpoint &, std::string)> &
78 return pb_peer_->signal_recv_error();
83 boost::signals2::signal<void(std::string)> &
86 return pb_peer_->signal_send_error();
99 std::shared_ptr<protobuf_comm::ProtobufBroadcastPeer>
107 std::string & peer_name,
108 std::string & broadcast_address,
109 unsigned short broadcast_port,
111 const std::string &crypto_key,
112 const std::string &crypto_cipher);
115 std::string & peer_name,
116 std::string & broadcast_address,
117 unsigned short send_port,
118 unsigned short recv_port,
120 const std::string &crypto_key,
121 const std::string &crypto_cipher);
127 std::shared_ptr<NetworkService> service_;
128 std::shared_ptr<protobuf_comm::ProtobufBroadcastPeer> pb_peer_;
Abstract class for a Gossip group manager.
Gossip group communication handler.
boost::signals2::signal< void(boost::asio::ip::udp::endpoint &, std::string)> & signal_recv_error()
Signal that is invoked when receiving a message failed.
boost::signals2::signal< void(std::string)> & signal_send_error()
Signal that is invoked when sending a message failed.
const std::string & name() const
Get group name.
~GossipGroup()
Destructor.
boost::signals2::signal< void(boost::asio::ip::udp::endpoint &, uint16_t, uint16_t, std::shared_ptr< google::protobuf::Message >)> & signal_received()
Signal that is invoked when a message has been received.
protobuf_comm::MessageRegister & message_register()
Get the protobuf message register.
void broadcast(google::protobuf::Message &m)
Broadcast a message to all peers in the group.
void send(std::string &peer, google::protobuf::Message &m)
Send a message.
std::shared_ptr< protobuf_comm::ProtobufBroadcastPeer > peer() const
Get Protobuf broadcast peer.
Service publisher interface.
Fawkes library namespace.