23#include <core/exception.h>
24#include <plugins/gossip/gossip/gossip_group.h>
25#include <plugins/gossip/gossip/gossip_group_manager.h>
44 std::string & broadcast_address,
45 unsigned short broadcast_port)
47 broadcast_addr(broadcast_address),
48 send_port(broadcast_port),
49 recv_port(broadcast_port)
60 std::string & broadcast_address,
61 unsigned short send_port,
62 unsigned short recv_port)
63: name(name), broadcast_addr(broadcast_address), send_port(send_port), recv_port(recv_port)
72 broadcast_addr(c.broadcast_addr),
73 send_port(c.send_port),
74 recv_port(c.recv_port),
75 crypto_key(c.crypto_key),
76 crypto_cipher(c.crypto_cipher)
109 std::string & service_name,
111 std::map<std::string, GossipGroupConfiguration> &initial_groups)
112: service_name_(service_name), service_publisher_(service_publisher)
114#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
115 for (
auto g : initial_groups) {
116 create_group(g.second);
119 std::map<std::string, GossipGroupConfiguration>::iterator g;
120 for (g = initial_groups.begin(); g != initial_groups.end(); ++g) {
121 create_group(g->second);
138 if (groups_.find(name) == groups_.end()) {
142 if (groups_.find(name) != groups_.end()) {
143 return groups_[name];
146 throw Exception(
"Cannot register to group %s", name.c_str());
179 groups_[gc.
name] =
new GossipGroup(gc.
name,
Base class for exceptions in Fawkes.
Group configuration for initial groups.
unsigned short send_port
UDP port to send messages to.
unsigned short recv_port
UDP port to list on for messages.
std::string name
name of the group
std::string crypto_cipher
encryption cipher
GossipGroupConfiguration & operator=(const GossipGroupConfiguration &c)
Assignment operator.
std::string crypto_key
encryption key
std::string broadcast_addr
Broadcast IP Addr.
GossipGroupConfiguration()
Constructor.
GossipGroupManager(std::string &service_name, ServicePublisher *service_publisher, std::map< std::string, GossipGroupConfiguration > &initial_groups)
Constructor.
virtual void leave_group(RefPtr< GossipGroup > &group)
Leave a gossip group.
virtual RefPtr< GossipGroup > join_group(const std::string &name)
Join a group.
virtual ~GossipGroupManager()
Destructor.
Gossip group communication handler.
void reset()
Reset pointer.
Service publisher interface.
Fawkes library namespace.