23 #ifndef __PLUGINS_GOSSIP_GOSSIP_GOSSIP_GROUP_H_ 24 #define __PLUGINS_GOSSIP_GOSSIP_GOSSIP_GROUP_H_ 26 #include <protobuf_comm/peer.h> 28 #include <google/protobuf/message.h> 30 #include <boost/asio.hpp> 31 #include <boost/signals2.hpp> 35 class ProtobufBroadcastPeer;
43 class ServicePublisher;
51 void send(std::string &peer,
52 google::protobuf::Message &m);
54 void broadcast(google::protobuf::Message &m);
61 {
return pb_peer_->message_register(); }
65 boost::signals2::signal<void (boost::asio::ip::udp::endpoint &, uint16_t, uint16_t,
66 std::shared_ptr<google::protobuf::Message>)> &
68 {
return pb_peer_->signal_received(); }
72 boost::signals2::signal<void (boost::asio::ip::udp::endpoint &, std::string)> &
74 {
return pb_peer_->signal_recv_error(); }
78 boost::signals2::signal<void (std::string)> &
80 {
return pb_peer_->signal_send_error(); }
84 const std::string &
name()
const {
return name_; }
88 std::shared_ptr<protobuf_comm::ProtobufBroadcastPeer>
peer()
const 92 GossipGroup(std::string &group_name, std::string &peer_name,
93 std::string &broadcast_address,
unsigned short broadcast_port,
95 const std::string &crypto_key,
const std::string &crypto_cipher);
97 GossipGroup(std::string &group_name, std::string &peer_name,
98 std::string &broadcast_address,
99 unsigned short send_port,
unsigned short recv_port,
101 const std::string &crypto_key,
const std::string &crypto_cipher);
107 std::shared_ptr<NetworkService> service_;
108 std::shared_ptr<protobuf_comm::ProtobufBroadcastPeer> pb_peer_;
Service publisher interface.
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.
Fawkes library namespace.
std::shared_ptr< protobuf_comm::ProtobufBroadcastPeer > peer() const
Get Protobuf broadcast peer.
Register to map msg type numbers to Protobuf messages.
const std::string & name() const
Get group name.
boost::signals2::signal< void(boost::asio::ip::udp::endpoint &, std::string)> & signal_recv_error()
Signal that is invoked when receiving a message failed.
Gossip group communication handler.
Abstract class for a Gossip group manager.
protobuf_comm::MessageRegister & message_register()
Get the protobuf message register.
boost::signals2::signal< void(std::string)> & signal_send_error()
Signal that is invoked when sending a message failed.