10 : initialized_(false),
12 heart_beat_(heart_beat * 1000000000),
26 endpoints_.set_name(prefix_, vars);
31 "EndpointDiscovery::filter:"
32 " Processing a new update with %d records\n",
38 endpoints_.set(endpoint, cur_time);
40 if (heart_beat_ > 0 && last_clear_ != cur_time)
42 std::vector<std::string> keys;
43 endpoints_.sync_keys();
45 endpoints_.keys(keys);
47 for (
size_t i = 0; i < keys.size(); ++i)
50 if (cur_time - endpoints_[keys[i]].to_integer() > heart_beat_)
53 "EndpointDiscovery::filter:"
54 " Erasing endpoint %s\n",
57 endpoints_.erase(keys[i]);
61 last_clear_ = cur_time;
madara::knowledge::KnowledgeRecord::Integer Integer
#define madara_logger_log(loggering, level,...)
Fast version of the madara::logger::log method.
madara::knowledge::KnowledgeRecord::Integer Integer
virtual void filter(knowledge::KnowledgeMap &records, const transport::TransportContext &transport_context, knowledge::Variables &vars)
Calls the main logic of the filter.
virtual ~EndpointDiscovery()
Destructor.
EndpointDiscovery(const std::string &prefix=".endpoints", knowledge::KnowledgeRecord::Integer heart_beat=-1)
Constructor.
logger::Logger & get_logger(void) const
Gets the logger used for information printing.
Provides an interface for external functions into the MADARA KaRL variable settings.
ThreadSafeContext * get_context(void)
Returns the ThreadSafeContext associated with this Variables facade.
Provides context about the transport.
uint64_t get_current_time(void) const
Gets the current timestamp.
const std::string & get_endpoint(void) const
Returns the current message endpoint.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
Provides utility functions and classes for common tasks and needs.