30 return "TCP (unsupported)";
34 return "UDP Multicast";
38 return "UDP Broadcast";
42 return "UDP Registry Server";
46 return "UDP Registry Client";
59 : write_domain(settings.write_domain),
60 read_threads(settings.read_threads),
61 queue_length(settings.queue_length),
63 max_fragment_size(settings.max_fragment_size),
64 resend_attempts(settings.resend_attempts),
65 fragment_queue_length(settings.fragment_queue_length),
66 reliability(settings.reliability),
68 processes(settings.processes),
69 on_data_received_logic(settings.on_data_received_logic),
70 delay_launch(settings.delay_launch),
71 never_exit(settings.never_exit),
72 send_reduced_message_header(settings.send_reduced_message_header),
73 slack_time(settings.slack_time),
74 read_thread_hertz(settings.read_thread_hertz),
75 max_send_hertz(settings.max_send_hertz),
77 no_sending(settings.no_sending),
78 no_receiving(settings.no_receiving),
79 send_history(settings.send_history),
80 debug_to_kb_prefix(settings.debug_to_kb_prefix),
81 read_domains_(settings.read_domains_)
84 for (
unsigned int i = 0; i < settings.
hosts.size(); ++i)
112 hosts.resize(settings.
hosts.size());
113 for (
unsigned int i = 0; i < settings.
hosts.size(); ++i)
114 hosts[i] = settings.
hosts[i];
126 for (OriginatorFragmentMap::iterator originator = fragment_map.begin();
127 originator != fragment_map.end(); ++originator)
129 for (ClockFragmentMap::iterator clock = originator->second.begin();
130 clock != originator->second.end(); ++clock)
142 hosts.push_back(host);
158 value =
knowledge.get(prefix +
".read_threads");
164 value =
knowledge.get(prefix +
".write_domain");
170 value =
knowledge.get(prefix +
".queue_length");
182 value =
knowledge.get(prefix +
".max_fragment_size");
185 max_fragment_size = (uint32_t)value.
to_integer();
188 value =
knowledge.get(prefix +
".resend_attempts");
191 resend_attempts = (uint32_t)value.
to_integer();
194 value =
knowledge.get(prefix +
".fragment_queue_length");
197 fragment_queue_length = (uint32_t)value.
to_integer();
200 value =
knowledge.get(prefix +
".reliability");
212 value =
knowledge.get(prefix +
".processes");
218 value =
knowledge.get(prefix +
".on_data_received_logic");
221 on_data_received_logic = value.
to_string();
224 value =
knowledge.get(prefix +
".delay_launch");
227 delay_launch = value.
is_true();
230 value =
knowledge.get(prefix +
".never_exit");
236 value =
knowledge.get(prefix +
".send_reduced_message_header");
239 send_reduced_message_header = value.
is_true();
242 value =
knowledge.get(prefix +
".slack_time");
248 value =
knowledge.get(prefix +
".max_send_hertz");
254 value =
knowledge.get(prefix +
".hosts.size");
259 hosts.resize(kb_hosts.
size());
260 for (
unsigned int i = 0; i < hosts.size(); ++i)
261 hosts[i] = kb_hosts[i];
267 std::vector<std::string> keys;
268 kb_read_domains.
keys(keys);
270 for (
unsigned int i = 0; i < keys.size(); ++i)
272 read_domains_[keys[i]] = 1;
275 value =
knowledge.get(prefix +
".no_sending");
281 value =
knowledge.get(prefix +
".no_receiving");
284 no_receiving = value.
is_true();
287 value =
knowledge.get(prefix +
".debug_to_kb_prefix");
290 debug_to_kb_prefix = value.
is_true();
299 #ifndef _MADARA_NO_KARL_
307 value =
knowledge.get(prefix +
".read_threads");
313 value =
knowledge.get(prefix +
".write_domain");
319 value =
knowledge.get(prefix +
".queue_length");
331 value =
knowledge.get(prefix +
".max_fragment_size");
334 max_fragment_size = (uint32_t)value.
to_integer();
337 value =
knowledge.get(prefix +
".resend_attempts");
340 resend_attempts = (uint32_t)value.
to_integer();
343 value =
knowledge.get(prefix +
".fragment_queue_length");
346 fragment_queue_length = (uint32_t)value.
to_integer();
349 value =
knowledge.get(prefix +
".reliability");
361 value =
knowledge.get(prefix +
".processes");
367 value =
knowledge.get(prefix +
".on_data_received_logic");
370 on_data_received_logic = value.
to_string();
373 value =
knowledge.get(prefix +
".delay_launch");
376 delay_launch = value.
is_true();
379 value =
knowledge.get(prefix +
".never_exit");
385 value =
knowledge.get(prefix +
".send_reduced_message_header");
388 send_reduced_message_header = value.
is_true();
391 value =
knowledge.get(prefix +
".slack_time");
397 value =
knowledge.get(prefix +
".read_thread_hertz");
403 value =
knowledge.get(prefix +
".max_send_hertz");
409 value =
knowledge.get(prefix +
".hosts.size");
414 hosts.resize(kb_hosts.
size());
415 for (
unsigned int i = 0; i < hosts.size(); ++i)
416 hosts[i] = kb_hosts[i];
422 std::vector<std::string> keys;
423 kb_read_domains.
keys(keys);
425 for (
unsigned int i = 0; i < keys.size(); ++i)
427 read_domains_[keys[i]] = 1;
430 value =
knowledge.get(prefix +
".no_sending");
436 value =
knowledge.get(prefix +
".no_receiving");
439 no_receiving = value.
is_true();
442 value =
knowledge.get(prefix +
".debug_to_kb_prefix");
445 debug_to_kb_prefix = value.
is_true();
458 prefix +
".hosts",
knowledge, (
int)hosts.size());
461 knowledge.set(prefix +
".write_domain", write_domain);
467 prefix +
".fragment_queue_length",
Integer(fragment_queue_length));
472 knowledge.set(prefix +
".on_data_received_logic", on_data_received_logic);
476 knowledge.set(prefix +
".send_reduced_message_header",
477 Integer(send_reduced_message_header));
478 knowledge.set(prefix +
".slack_time", slack_time);
479 knowledge.set(prefix +
".read_thread_hertz", read_thread_hertz);
480 knowledge.set(prefix +
".max_send_hertz", max_send_hertz);
482 for (
size_t i = 0; i < hosts.size(); ++i)
483 kb_hosts.
set(i, hosts[i]);
487 knowledge.set(prefix +
".debug_to_kb_prefix", debug_to_kb_prefix);
491 for (std::map<std::string, int>::const_iterator i = read_domains_.begin();
492 i != read_domains_.end(); ++i)
507 #ifndef _MADARA_NO_KARL_
515 prefix +
".hosts",
knowledge, (
int)hosts.size());
518 knowledge.set(prefix +
".write_domain", write_domain);
524 prefix +
".fragment_queue_length",
Integer(fragment_queue_length));
529 knowledge.set(prefix +
".on_data_received_logic", on_data_received_logic);
533 knowledge.set(prefix +
".send_reduced_message_header",
534 Integer(send_reduced_message_header));
535 knowledge.set(prefix +
".slack_time", slack_time);
536 knowledge.set(prefix +
".read_thread_hertz", read_thread_hertz);
537 knowledge.set(prefix +
".max_send_hertz", max_send_hertz);
539 for (
size_t i = 0; i < hosts.size(); ++i)
540 kb_hosts.
set(i, hosts[i]);
544 knowledge.set(prefix +
".debug_to_kb_prefix", debug_to_kb_prefix);
548 for (std::map<std::string, int>::const_iterator i = read_domains_.begin();
549 i != read_domains_.end(); ++i)
madara::knowledge::KnowledgeRecord::Integer Integer
This class provides a distributed knowledge base to users.
This class encapsulates an entry in a KnowledgeBase.
std::string to_string(const std::string &delimiter=", ") const
converts the value to a string.
double to_double(void) const
converts the value to a float/double.
bool is_true(void) const
Checks to see if the record is true.
bool exists(void) const
Checks if record exists (i.e., is not uncreated)
Integer to_integer(void) const
converts the value to an integer.
This class stores a map of strings to KaRL variables.
int set(const std::string &key, madara::knowledge::KnowledgeRecord::Integer value=madara::knowledge::KnowledgeRecord::MODIFIED)
Sets a location within the map to the specified value.
void keys(std::vector< std::string > &curkeys) const
Returns the keys within the map.
This class stores a vector of strings inside of KaRL.
int set(size_t index, const type &value)
Sets a knowledge variable to a specified value.
size_t size(void) const
Returns the size of the local vector.
Holds basic transport settings.
double max_send_hertz
Maximum rate of sending messages.
uint32_t fragment_queue_length
Indicates queue length for holding clock-keyed fragments.
bool no_receiving
if true, never receive over transport
virtual void save_text(const std::string &filename, const std::string &prefix="transport") const
Saves the settings from a text file.
uint32_t max_fragment_size
Maximum allowed fragment size for partitioning large messages.
bool delay_launch
Delay launching transports until explicit activate call.
uint32_t reliability
Reliability required of the transport.
uint32_t id
The id of this process (DEPRECATED). You do not need to set this.
uint32_t processes
Number of processes (DEPRECATED). You do not need to set this.
TransportSettings()=default
Constructor for this class.
std::string on_data_received_logic
Logic to be evaluated after every successful update.
virtual void load_text(const std::string &filename, const std::string &prefix="transport")
Loads the settings from a text file.
std::vector< std::string > hosts
Host information for transports that require it.
uint32_t queue_length
Length of the buffer used to store history of events.
bool send_history
if true, send all updates since last send, for records that have history enabled (if the history capa...
uint32_t type
Type of transport. See madara::transport::Types for options.
bool never_exit
Prevent MADARA from exiting on fatal errors and invalid state.
virtual ~TransportSettings()
std::map< std::string, int > read_domains_
Any acceptable read domain is added here.
void operator=(const TransportSettings &settings)
Assignment operator.
uint32_t read_threads
the number of read threads to start
void clear_hosts(void)
Safely clears hosts from the settings.
virtual void save(const std::string &filename, const std::string &prefix="transport") const
Saves the settings from a binary file.
std::string debug_to_kb_prefix
if not empty, save debug information to knowledge base at prefix
std::string write_domain
All class members are accessible to users for easy setup.
bool no_sending
if true, never send over transport
int resend_attempts
Maximum number of attempts to resend if transport is busy.
double read_thread_hertz
Number of valid messages allowed to be received per second.
double slack_time
Time to sleep between sends and rebroadcasts.
bool send_reduced_message_header
Send a reduced message header (clock, size, updates, KaRL id)
void add_host(const std::string &host)
Safely add hosts to the settings.
virtual void load(const std::string &filename, const std::string &prefix="transport")
Loads the settings from a binary file.
Provides container classes for fast knowledge base access and mutation.
Provides functions and classes for the distributed knowledge base.
MADARA_EXPORT std::string types_to_string(int id)
Converts a transport type enum to a string equivalent.
MADARA_EXPORT void delete_fragments(FragmentMap &map)
Deletes fragments within a fragment map and clears the map.
std::string file_to_string(const std::string &filename)
Reads a file into a string.