MADARA
3.4.1
|
This class provides a distributed knowledge base to users. More...
#include <KnowledgeBase.h>
Public Member Functions | |
KnowledgeBase () | |
Constructor. More... | |
KnowledgeBase (const KnowledgeBase &original)=default | |
Copy constructor. More... | |
KnowledgeBase (const std::string &host, const madara::transport::TransportSettings &config) | |
Constructor. More... | |
KnowledgeBase (const std::string &host, int transport) | |
Constructor. More... | |
KnowledgeBase (const std::string &host, int transport, const std::string &domain) | |
Constructor. More... | |
~KnowledgeBase ()=default | |
Destructor. More... | |
void | acquire (void) |
Acquires the recursive lock on the knowledge base. More... | |
void | activate_transport (void) |
Starts the transport mechanism for dissemination if it is closed. More... | |
void | add_modifieds (const VariableReferences &modifieds) const |
Adds a list of VariableReferences to the current modified list. More... | |
int | apply_modified (const EvalSettings &settings=EvalSettings()) |
Applies current time and modified to all global variables and tries to send them. More... | |
void | attach_logger (logger::Logger &logger) const |
Attaches a logger to be used for printing. More... | |
std::unique_ptr< BaseStreamer > | attach_streamer (std::unique_ptr< BaseStreamer > streamer) |
Attach a streaming provider object, inherited from BaseStreamer, such as CheckpointStreamer. More... | |
size_t | attach_transport (const std::string &id, transport::TransportSettings &settings) |
Adds a built-in transport with the specified settings. More... | |
size_t | attach_transport (madara::transport::Base *transport) |
Attaches a transport to the Knowledge Engine. More... | |
template<typename Callable > | |
auto | cinvoke (const std::string &key, Callable &&callable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
template<typename Callable > | |
auto | cinvoke (const VariableReference &key, Callable &&callable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
void | clear (bool erase=false) |
Clears the knowledge base. More... | |
bool | clear (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) |
Clears a variable. More... | |
void | clear_history (const std::string &key, const EvalSettings &settings=EvalSettings()) |
Clear all history for this record, keeping the current value. More... | |
void | clear_history (const VariableReference &key, const EvalSettings &settings=EvalSettings()) |
Clear all history for this record, keeping the current value. More... | |
void | clear_map (void) |
Clears the knowledge base. More... | |
void | clear_modifieds (void) |
Clear all modifications to the knowledge base. More... | |
void | close_transport (void) |
Closes the transport mechanism so no dissemination is possible. More... | |
CompiledExpression | compile (const std::string &expression) |
Compiles a KaRL expression into an expression tree. More... | |
void | copy (const KnowledgeBase &source, const CopySet ©_set=CopySet(), bool clean_copy=false, const EvalSettings &settings=EvalSettings()) |
Copies variables and values from source to this context. More... | |
void | copy (const KnowledgeBase &source, const KnowledgeRequirements &reqs, const EvalSettings &settings=EvalSettings()) |
Copies variables and values from source to this context. More... | |
std::string | debug_modifieds (void) const |
Retrieves a stringified list of all modified variables that are ready to send over transport on next send_modifieds call. More... | |
void | define_function (const std::string &name, boost::python::object callable) |
Defines a named python function. More... | |
void | define_function (const std::string &name, const CompiledExpression &expression) |
Defines a MADARA KaRL function. More... | |
void | define_function (const std::string &name, const std::string &expression) |
Defines a MADARA KaRL function. More... | |
void | define_function (const std::string &name, jobject callable) |
Defines a named java function. More... | |
void | define_function (const std::string &name, knowledge::KnowledgeRecord(*func)(const char *, FunctionArguments &, Variables &)) |
Defines a named function that can distinguish the name it was called with in MADARA. More... | |
void | define_function (const std::string &name, knowledge::KnowledgeRecord(*func)(FunctionArguments &, Variables &)) |
Defines a function. More... | |
madara::knowledge::KnowledgeRecord | evaluate (CompiledExpression &expression, const EvalSettings &settings=EvalSettings()) |
Evaluates an expression. More... | |
madara::knowledge::KnowledgeRecord | evaluate (const std::string &expression, const EvalSettings &settings=EvalSettings()) |
Evaluates an expression. More... | |
madara::knowledge::KnowledgeRecord | evaluate (expression::ComponentNode *root, const EvalSettings &settings=EvalSettings()) |
Evaluates a root-based tree (result of compile) More... | |
KnowledgeRecord | evaluate_file (CheckpointSettings &checkpoint_settings, const KnowledgeUpdateSettings &update_settings=KnowledgeUpdateSettings(true, true, true, false)) |
Loads and evaluates a karl script from a file. More... | |
bool | exists (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) const |
Checks if a knowledge location exists in the context. More... | |
bool | exists (const VariableReference &variable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) const |
Checks if a knowledge variable exists in the context. More... | |
std::string | expand_statement (const std::string &statement) |
Expands a statement using variable expansion. More... | |
void | facade_for (ThreadSafeContext &target) |
Change the knowledge base to become a facade for another context. More... | |
std::string | file_to_string (CheckpointSettings &checkpoint_settings) |
Loads and returns a karl script from a file with encode/decode. More... | |
template<typename Func > | |
void | for_each (Func &&func) const |
Call given Callable on each element in this KB. More... | |
madara::knowledge::KnowledgeRecord | get (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Atomically gets the current value of a variable (without any history). More... | |
madara::knowledge::KnowledgeRecord | get (const VariableReference &variable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Atomically gets the current value of a variable (without any history). More... | |
ThreadSafeContext & | get_context (void) |
Returns the ThreadSafeContext associated with this Knowledge Base. More... | |
const ThreadSafeContext & | get_context (void) const |
Returns the ThreadSafeContext associated with this Knowledge Base. More... | |
std::vector< KnowledgeRecord > | get_history (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Get a copy of the entire stored history of this record. More... | |
template<typename T > | |
std::vector< T > | get_history (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Get a copy of the entire stored history of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
template<typename OutputIterator > | |
auto | get_history (const std::string &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the stored history of this record to the given output iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_history (const std::string &key, OutputIterator out, ssize_t index, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the given range of history to the output iterator given. More... | |
KnowledgeRecord | get_history (const std::string &key, size_t index, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the given entry in this record's history. More... | |
std::vector< KnowledgeRecord > | get_history (const std::string &key, size_t index, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return a copy of the given range of history in a vector. More... | |
std::vector< KnowledgeRecord > | get_history (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Get a copy of the entire stored history of this record. More... | |
template<typename T > | |
std::vector< T > | get_history (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Get a copy of the entire stored history of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
template<typename OutputIterator > | |
auto | get_history (const VariableReference &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the stored history of this record to the given output iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_history (const VariableReference &key, OutputIterator out, ssize_t index, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the given range of history to the output iterator given. More... | |
KnowledgeRecord | get_history (const VariableReference &key, size_t index, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the given entry in this record's history. More... | |
std::vector< KnowledgeRecord > | get_history (const VariableReference &key, size_t index, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return a copy of the given range of history in a vector. More... | |
size_t | get_history_capacity (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the maximum amount of history this record can hold. More... | |
size_t | get_history_capacity (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the maximum amount of history this record can hold. More... | |
size_t | get_history_size (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the amount of history this record holds. More... | |
size_t | get_history_size (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the amount of history this record holds. More... | |
std::string | get_id (void) |
Returns the unique host and ephemeral binding for this Knowlede Base. More... | |
int | get_log_level (void) |
Gets the log level. More... | |
logger::Logger & | get_logger (void) const |
Gets the logger used for information printing. More... | |
void | get_matches (const std::string &prefix, const std::string &suffix, VariableReferences &matches) |
Creates an iteration of VariableReferences to all keys matching the prefix and suffix. More... | |
KnowledgeRecord | get_newest (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the newest stored history entry of this record. More... | |
template<typename T > | |
T | get_newest (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the newest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord) More... | |
template<typename OutputIterator > | |
auto | get_newest (const std::string &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the newest stored history entry of this record to the given output iterator. More... | |
template<typename OutputIterator , typename ConstOutputIterator > | |
auto | get_newest (const std::string &key, OutputIterator out, ConstOutputIterator out_end, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> utility::enable_if_<!std::is_arithmetic< ConstOutputIterator >::value, size_t > |
Copy the newest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_newest (const std::string &key, OutputIterator out, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the count newest stored history entries of this record to the given output iterator, in order from oldest to newest. More... | |
std::vector< KnowledgeRecord > | get_newest (const std::string &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count newest stored history entries of this record in a vector. More... | |
template<typename T > | |
std::vector< T > | get_newest (const std::string &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count newest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
KnowledgeRecord | get_newest (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the newest stored history entry of this record. More... | |
template<typename T > | |
T | get_newest (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the newest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord) More... | |
template<typename OutputIterator > | |
auto | get_newest (const VariableReference &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the newest stored history entry of this record to the given output iterator. More... | |
template<typename OutputIterator , typename ConstOutputIterator > | |
auto | get_newest (const VariableReference &key, OutputIterator out, ConstOutputIterator out_end, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> utility::enable_if_<!std::is_arithmetic< ConstOutputIterator >::value, size_t > |
Copy the newest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_newest (const VariableReference &key, OutputIterator out, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the count newest stored history entries of this record to the given output iterator, in order from oldest to newest. More... | |
std::vector< KnowledgeRecord > | get_newest (const VariableReference &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count newest stored history entries of this record in a vector. More... | |
template<typename T > | |
std::vector< T > | get_newest (const VariableReference &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count newest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
size_t | get_num_transports (void) |
Gets the number of transports. More... | |
KnowledgeRecord | get_oldest (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the oldest stored history entry of this record. More... | |
template<typename T > | |
T | get_oldest (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the oldest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord) More... | |
template<typename OutputIterator > | |
auto | get_oldest (const std::string &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the oldest stored history entry of this record to the given output iterator. More... | |
template<typename OutputIterator , typename ConstOutputIterator > | |
auto | get_oldest (const std::string &key, OutputIterator out, ConstOutputIterator out_end, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> utility::enable_if_<!std::is_arithmetic< ConstOutputIterator >::value, size_t > |
Copy the oldest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_oldest (const std::string &key, OutputIterator out, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the count oldest stored history entries of this record to the given output iterator, in order from oldest to newest. More... | |
std::vector< KnowledgeRecord > | get_oldest (const std::string &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count oldest stored history entries of this record in a vector. More... | |
template<typename T > | |
std::vector< T > | get_oldest (const std::string &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count oldest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
KnowledgeRecord | get_oldest (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the oldest stored history entry of this record. More... | |
template<typename T > | |
T | get_oldest (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the oldest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord) More... | |
template<typename OutputIterator > | |
auto | get_oldest (const VariableReference &key, OutputIterator out, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(*out, size_t{}) |
Copy the oldest stored history entry of this record to the given output iterator. More... | |
template<typename OutputIterator , typename ConstOutputIterator > | |
auto | get_oldest (const VariableReference &key, OutputIterator out, ConstOutputIterator out_end, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> utility::enable_if_<!std::is_arithmetic< ConstOutputIterator >::value, size_t > |
Copy the oldest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest. More... | |
template<typename OutputIterator > | |
size_t | get_oldest (const VariableReference &key, OutputIterator out, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Copy the count oldest stored history entries of this record to the given output iterator, in order from oldest to newest. More... | |
std::vector< KnowledgeRecord > | get_oldest (const VariableReference &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count oldest stored history entries of this record in a vector. More... | |
template<typename T > | |
std::vector< T > | get_oldest (const VariableReference &key, size_t count, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return the count oldest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord. More... | |
VariableReference | get_ref (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Atomically returns a reference to the variable. More... | |
bool | has_history (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return true if this record has a circular buffer history. More... | |
bool | has_history (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
Return true if this record has a circular buffer history. More... | |
template<typename Callable > | |
auto | invoke (const std::string &key, Callable &&callable, const EvalSettings &settings=EvalSettings()) -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
template<typename Callable > | |
auto | invoke (const std::string &key, Callable &&callable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
template<typename Callable > | |
auto | invoke (const VariableReference &key, Callable &&callable, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
template<typename Callable > | |
auto | invoke (VariableReference key, Callable &&callable, const EvalSettings &settings=EvalSettings()) -> decltype(utility::invoke_(std::forward< Callable >(callable), std::declval< KnowledgeRecord & >())) |
int64_t | load_context (CheckpointSettings &checkpoint_settings, const KnowledgeUpdateSettings &update_settings=KnowledgeUpdateSettings(true, true, true, false)) |
Loads the context from a file. More... | |
int64_t | load_context (const std::string &filename, bool use_id=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(true, true, true, false)) |
Loads the context from a file. More... | |
int64_t | load_context (const std::string &filename, FileHeader &meta, bool use_id=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(true, true, true, false)) |
Loads the context from a file. More... | |
void | lock (void) |
Locks the context to prevent updates over the network. More... | |
void | mark_modified (const std::string &name, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) |
Marks the variable as updated. More... | |
void | mark_modified (const VariableReference &variable, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) |
Marks the variable reference as updated. More... | |
int | modify (const EvalSettings &settings=EvalSettings()) |
Alias for apply_modified. More... | |
KnowledgeBase & | operator= (const KnowledgeBase &original)=default |
Assigns another instance's knowledge and settings to this instance. More... | |
void | print (const std::string &statement, unsigned int level=0) const |
Expands and prints a user provided statement at a logging level. More... | |
void | print (unsigned int level=0) const |
Prints all knowledge variables and values in the context. More... | |
void | print_knowledge (unsigned int level=0) const |
Deprecated alias for. More... | |
int | read_file (const std::string &knowledge_key, const std::string &filename, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Read a file into the knowledge base. More... | |
int | read_file (const VariableReference &variable, const std::string &filename, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically reads a file into a variable. More... | |
void | release (void) |
Releases a recursive lock on the knowledge base. More... | |
size_t | remove_transport (size_t index) |
Removes a transport. More... | |
void | reset_checkpoint (void) const |
Resets the local changed map, which tracks checkpointing modifieds. More... | |
madara::knowledge::KnowledgeRecord | retrieve_index (const std::string &key, size_t index, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Retrieves a value at a specified index within a knowledge array. More... | |
madara::knowledge::KnowledgeRecord | retrieve_index (const VariableReference &variable, size_t index, const KnowledgeReferenceSettings &settings=EvalSettings(true, false, true, false, false)) |
Retrieves a value at a specified index within a knowledge array. More... | |
int64_t | save_as_json (const CheckpointSettings &settings) const |
Saves the context to a file as JSON. More... | |
int64_t | save_as_json (const std::string &filename) const |
Saves the context to a file as JSON. More... | |
int64_t | save_as_karl (const CheckpointSettings &settings) const |
Saves the context to a file as karl assignments, rather than binary. More... | |
int64_t | save_as_karl (const std::string &filename) const |
Saves the context to a file as karl assignments, rather than binary. More... | |
int64_t | save_checkpoint (CheckpointSettings &settings) const |
Saves a checkpoint of a list of changes to a file. More... | |
int64_t | save_checkpoint (const std::string &filename, bool reset_modifieds=true) |
Saves a checkpoint of a list of changes to a file. More... | |
int64_t | save_context (CheckpointSettings &settings) const |
Saves the context to a file. More... | |
int64_t | save_context (const std::string &filename) const |
Saves the context to a file. More... | |
VariableReferences | save_modifieds (void) const |
Saves the list of modified records to use later for resending. More... | |
int | send_modifieds (const std::string &prefix="KnowledgeBase::send_modifieds", const EvalSettings &settings=EvalSettings::SEND) |
Sends all modified variables through the attached transports. More... | |
int | set (const std::string &key, const double *value, uint32_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer 1. More... | |
int | set (const std::string &key, const KnowledgeRecord &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a KnowledgeRecord. More... | |
int | set (const std::string &key, const madara::knowledge::KnowledgeRecord::Integer *value, uint32_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, const std::string &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, const std::vector< double > &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, const std::vector< KnowledgeRecord::Integer > &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, KnowledgeRecord &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a KnowledgeRecord. More... | |
int | set (const std::string &key, std::string &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, std::vector< double > &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::string &key, std::vector< KnowledgeRecord::Integer > &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
template<typename T , typename std::enable_if< std::is_integral< T >::value, void * >::type = nullptr> | |
int | set (const std::string &key, T value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
template<typename T , typename std::enable_if< std::is_floating_point< T >::value, void * >::type = nullptr> | |
int | set (const std::string &key, T value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets a knowledge variable to a specified value. More... | |
int | set (const VariableReference &variable, const double *value, uint32_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a double array. More... | |
int | set (const VariableReference &variable, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer 1. More... | |
int | set (const VariableReference &variable, const KnowledgeRecord &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a KnowledgeRecord. More... | |
int | set (const VariableReference &variable, const madara::knowledge::KnowledgeRecord::Integer *value, uint32_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer array. More... | |
int | set (const VariableReference &variable, const std::string &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a string. More... | |
int | set (const VariableReference &variable, const std::vector< double > &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a double array. More... | |
int | set (const VariableReference &variable, const std::vector< KnowledgeRecord::Integer > &value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer array. More... | |
int | set (const VariableReference &variable, KnowledgeRecord &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a KnowledgeRecord. More... | |
int | set (const VariableReference &variable, std::string &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a string. More... | |
int | set (const VariableReference &variable, std::vector< double > &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a double array. More... | |
int | set (const VariableReference &variable, std::vector< KnowledgeRecord::Integer > &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer array. More... | |
template<typename T , typename std::enable_if< std::is_floating_point< T >::value, void * >::type = nullptr> | |
int | set (const VariableReference &variable, T value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a double. More... | |
template<typename T , typename std::enable_if< std::is_integral< T >::value, void * >::type = nullptr> | |
int | set (const VariableReference &variable, T value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an integer. More... | |
int | set_file (const std::string &key, const unsigned char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an arbitrary string. More... | |
int | set_file (const VariableReference &variable, const unsigned char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an arbitrary string. More... | |
void | set_history_capacity (const std::string &key, size_t size, const EvalSettings &settings=EvalSettings()) |
Set the capacity of this record's history circular buffer. More... | |
void | set_history_capacity (const VariableReference &key, size_t size, const EvalSettings &settings=EvalSettings()) |
Set the capacity of this record's history circular buffer. More... | |
template<typename T > | |
int | set_index (const std::string &key, size_t index, T &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Sets an index within an array to a specified value. More... | |
template<typename T > | |
int | set_index (const VariableReference &variable, size_t index, T &&value, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of an array index to a value. More... | |
int | set_jpeg (const std::string &key, const unsigned char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a JPEG image. More... | |
int | set_jpeg (const VariableReference &variable, const unsigned char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a JPEG image. More... | |
void | set_log_level (int level) |
Sets the log level. More... | |
void | set_quality (const std::string &key, uint32_t quality, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Sets the quality of writing to a certain variable from this entity. More... | |
int | set_text (const VariableReference &variable, const char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to a text file's contents. More... | |
int | set_xml (const VariableReference &variable, const char *value, size_t size, const EvalSettings &settings=EvalSettings(true, false, true, false, false)) |
Atomically sets the value of a variable to an XML string. More... | |
std::string | setup_unique_hostport (const std::string &host="") |
Binds to an ephemeral port for unique tie breakers in global ordering. More... | |
std::shared_ptr< const std::vector< unsigned char > > | share_binary (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::vector< unsigned char > > | share_binary (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::vector< double > > | share_doubles (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::vector< double > > | share_doubles (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::vector< KnowledgeRecord::Integer > > | share_integers (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::vector< KnowledgeRecord::Integer > > | share_integers (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::string > | share_string (const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
std::shared_ptr< const std::string > | share_string (const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const |
knowledge::KnowledgeMap | to_map (const std::string &prefix) const |
Creates a variable map with Knowledge Records that begin with the given prefix. More... | |
size_t | to_map (const std::string &prefix, const std::string &delimiter, const std::string &suffix, std::vector< std::string > &next_keys, std::map< std::string, knowledge::KnowledgeRecord > &result, bool just_keys=false) |
Fills a variable map with list of keys according to a matching prefix, suffix, and delimiter hierarchy. More... | |
size_t | to_map (const std::string &subject, std::map< std::string, knowledge::KnowledgeRecord > &target) |
Fills a variable map with Knowledge Records that match an expression. More... | |
knowledge::KnowledgeMap | to_map_stripped (const std::string &prefix) const |
Creates a map with Knowledge Records that begin with the given prefix. More... | |
void | to_string (std::string &target, const std::string &array_delimiter=",", const std::string &record_delimiter=";\n", const std::string &key_val_delimiter="=") const |
Saves all keys and values into a string, using the underlying knowledge::KnowledgeRecord::to_string function. More... | |
size_t | to_vector (const std::string &subject, unsigned int start, unsigned int end, std::vector< KnowledgeRecord > &target) |
Fills a vector with Knowledge Records that begin with a common subject and have a finite range of integer values. More... | |
madara::transport::TransportSettings & | transport_settings (void) |
void | unlock (void) |
Unlocks the context to allow updates over the network (is only necessary if the context has been explicitly locked) More... | |
void | use (ThreadSafeContext &original) |
Refer to and use another knowledge base's context. More... | |
madara::knowledge::KnowledgeRecord | wait (CompiledExpression &expression, const WaitSettings &settings=WaitSettings()) |
Waits for an expression to be non-zero. More... | |
madara::knowledge::KnowledgeRecord | wait (const std::string &expression, const WaitSettings &settings=WaitSettings()) |
Waits for an expression to be non-zero. More... | |
void | wait_for_change (void) |
Wait for a change to happen to the context (e.g., from transports) More... | |
ssize_t | write_file (const std::string &knowledge_key, const std::string &filename) |
Write a file from the knowledge base to a specified location. More... | |
Private Member Functions | |
void | throw_null_context () const |
Private Attributes | |
ThreadSafeContext * | context_ |
A knowledge base can also be a facade for another knowledge base. More... | |
std::shared_ptr< KnowledgeBaseImpl > | impl_ |
Pointer to actual implementation, i.e., the "bridge", which is reference counted to automate memory management. More... | |
This class provides a distributed knowledge base to users.
Definition at line 44 of file KnowledgeBase.h.
|
inline |
Constructor.
Definition at line 17 of file KnowledgeBase.inl.
|
inline |
Constructor.
host | hostname/ip of this machine |
transport | transport to use for knowledge dissemination |
Definition at line 22 of file KnowledgeBase.inl.
|
inline |
Constructor.
host | hostname/ip of this machine |
transport | transport to use for knowledge dissemination |
domain | knowledge domain we want to join |
Definition at line 27 of file KnowledgeBase.inl.
|
inline |
Constructor.
host | hostname/ip of this machine |
config | transport settings to use for dissemination |
Definition at line 33 of file KnowledgeBase.inl.
|
default |
Copy constructor.
original | knowledge base to copy |
|
default |
Destructor.
|
inline |
Acquires the recursive lock on the knowledge base.
This will block any other thread from updating or using the knowledge base until you call @ release.
Definition at line 1038 of file KnowledgeBase.inl.
|
inline |
Starts the transport mechanism for dissemination if it is closed.
Definition at line 1248 of file KnowledgeBase.inl.
|
inline |
Adds a list of VariableReferences to the current modified list.
modifieds | a list of variables to add to modified list |
Definition at line 1350 of file KnowledgeBase.inl.
|
inline |
Applies current time and modified to all global variables and tries to send them.
settings | Settings for evaluating and printing |
Definition at line 231 of file KnowledgeBase.inl.
|
inline |
Attaches a logger to be used for printing.
logger | the logger the context should lose |
Definition at line 173 of file KnowledgeBase.inl.
|
inline |
Attach a streaming provider object, inherited from BaseStreamer, such as CheckpointStreamer.
Once attached, all updates to records in this ThreadSafeContext will be provided to the streamer. May pass nullptr to stop streaming.
streamer | the new streamer to attach |
Definition at line 1385 of file KnowledgeBase.h.
|
inline |
Adds a built-in transport with the specified settings.
id | unique identifier for this agent (empty string will use default generated id) |
settings | settings for the new transport |
Definition at line 1281 of file KnowledgeBase.inl.
|
inline |
Attaches a transport to the Knowledge Engine.
Note that the transport should use the same ThreadSafeContext as the Knowledge Engine.
transport | a new transport to attach to the Knowledge Base |
Definition at line 1256 of file KnowledgeBase.inl.
|
inline |
Definition at line 1590 of file KnowledgeBase.h.
|
inline |
Definition at line 1607 of file KnowledgeBase.h.
|
inline |
Clears the knowledge base.
erase | If true, completely erase keys. If false, reset knowledge |
Definition at line 1014 of file KnowledgeBase.inl.
|
inline |
Clears a variable.
This is safer than erasing the variable. It clears the memory used in the variable and marks it as UNCREATED, meaning that it is effectively deleted, will not show up in
key | unique identifier of the variable |
settings | settings for referring to variables |
Definition at line 997 of file KnowledgeBase.inl.
|
inline |
Clear all history for this record, keeping the current value.
Definition at line 1672 of file KnowledgeBase.h.
|
inline |
Clear all history for this record, keeping the current value.
Definition at line 2017 of file KnowledgeBase.h.
|
inline |
Clears the knowledge base.
Definition at line 1026 of file KnowledgeBase.inl.
|
inline |
Clear all modifications to the knowledge base.
This action may be useful if you are wanting to keep local changes but not inform other agents (possibly due to a need to further process and verify the information). The knowledge stays in its current form (i.e., this does not roll back state or anything like that)
Definition at line 1338 of file KnowledgeBase.inl.
|
inline |
Closes the transport mechanism so no dissemination is possible.
Definition at line 247 of file KnowledgeBase.inl.
|
inline |
Compiles a KaRL expression into an expression tree.
expression | expression to compile |
exceptions::KarlException | failure during compile/evaluate |
Definition at line 1064 of file KnowledgeBase.inl.
|
inline |
Copies variables and values from source to this context.
PERFORMANCE NOTES: worst case depends on size of copy_set. If empty, performance is always O (n), where n is number of variables in the source context. If copy_set is not empty, then performance is O (m log n) where m is the number of variables in copy_set and n is number of variables in the source context.
Note that this is a deep copy due to the fact that source and destination are expected to have their own thread management (ref-counted variables can be problematic if shallow copy).
source | the source knowledge base to copy from |
copy_set | a map of variables that should be copied. If empty, then everything is copied. If not empty, only the supplied variables will be copied. |
clean_copy | if true, clear the destination context (this) before copying. |
settings | settings for appplying updates to context |
Definition at line 213 of file KnowledgeBase.inl.
|
inline |
Copies variables and values from source to this context.
PERFORMANCE NOTES: predicates with prefixes can limit copying to O(log n). predices with suffixes and no prefix force O(n) copy cost since all records could fit requirements
source | the source context to copy from |
reqs | requirements that must be met |
settings | settings for appplying updates to context |
Definition at line 197 of file KnowledgeBase.inl.
|
inline |
Retrieves a stringified list of all modified variables that are ready to send over transport on next send_modifieds call.
Definition at line 1392 of file KnowledgeBase.inl.
|
inline |
Defines a named python function.
name | name of the function |
callable | external python function to call with this name |
Definition at line 1178 of file KnowledgeBase.inl.
|
inline |
Defines a MADARA KaRL function.
name | name of the function |
expression | KaRL function body |
Definition at line 1216 of file KnowledgeBase.inl.
|
inline |
Defines a MADARA KaRL function.
name | name of the function |
expression | KaRL function body |
Definition at line 1198 of file KnowledgeBase.inl.
|
inline |
Defines a named java function.
name | name of the function |
callable | external java object to call with this name |
Definition at line 1161 of file KnowledgeBase.inl.
|
inline |
Defines a named function that can distinguish the name it was called with in MADARA.
name | name of the function |
func | external function to call with this name |
Definition at line 1132 of file KnowledgeBase.inl.
|
inline |
Defines a function.
name | name of the function |
func | external function to call with this name |
Definition at line 1146 of file KnowledgeBase.inl.
|
inline |
Evaluates an expression.
expression | KaRL expression to evaluate (result of compile) |
settings | Settings for evaluating and printing |
exceptions::KarlException | failure during compile/evaluate |
Definition at line 1096 of file KnowledgeBase.inl.
|
inline |
Evaluates an expression.
expression | KaRL expression to evaluate |
settings | Settings for evaluating and printing |
exceptions::KarlException | failure during compile/evaluate |
Definition at line 1077 of file KnowledgeBase.inl.
|
inline |
Evaluates a root-based tree (result of compile)
root | root-based tree |
settings | Settings for evaluating and printing |
exceptions::KarlException | failure during compile/evaluate |
Definition at line 1114 of file KnowledgeBase.inl.
|
inline |
Loads and evaluates a karl script from a file.
checkpoint_settings | checkpoint settings to load |
update_settings | settings for applying the updates |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1726 of file KnowledgeBase.inl.
|
inline |
Checks if a knowledge location exists in the context.
key | knowledge variable location |
settings | settings for referring to knowledge variables |
Definition at line 904 of file KnowledgeBase.inl.
|
inline |
Checks if a knowledge variable exists in the context.
variable | knowledge variable reference |
settings | settings for referring to knowledge variables |
Definition at line 921 of file KnowledgeBase.inl.
|
inline |
Expands a statement using variable expansion.
For example, if the statement were MyKnowledge.{.id}, and .id==1, then the statement would be expanded to MyKnowledge.1
statement | statement to expand |
Definition at line 466 of file KnowledgeBase.inl.
|
inline |
Change the knowledge base to become a facade for another context.
It is extremely important that the context stays within scope for the duration of the life of this Knowledge Base. Otherwise, the Knowledge Base will eventually point to invalid memory
target | the target context to manipulate |
Definition at line 1468 of file KnowledgeBase.inl.
|
inline |
Loads and returns a karl script from a file with encode/decode.
checkpoint_settings | checkpoint settings to load |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1742 of file KnowledgeBase.inl.
|
inline |
Call given Callable on each element in this KB.
Note that the context will be locked for the entire duration of this iteration. The Callable must accept one argument, a const std::pair<const std::string, KnowledgeRecord>&
, and it's return value is ignored.
Func | a callable type as described above |
func | the callable object; either function pointer or functor |
Definition at line 2327 of file KnowledgeBase.h.
|
inline |
Atomically gets the current value of a variable (without any history).
key | knowledge location |
settings | settings for referring to knowledge variables |
Definition at line 255 of file KnowledgeBase.inl.
|
inline |
Atomically gets the current value of a variable (without any history).
variable | reference to a variable ( |
settings | the settings for referring to variables |
Definition at line 289 of file KnowledgeBase.inl.
|
inline |
Returns the ThreadSafeContext associated with this Knowledge Base.
This is necessary for creating custom transports.
Definition at line 1306 of file KnowledgeBase.inl.
|
inline |
Returns the ThreadSafeContext associated with this Knowledge Base.
This is necessary for creating custom transports.
Definition at line 1322 of file KnowledgeBase.inl.
|
inline |
Get a copy of the entire stored history of this record.
Definition at line 1881 of file KnowledgeBase.h.
|
inline |
Get a copy of the entire stored history of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 1896 of file KnowledgeBase.h.
|
inline |
Copy the stored history of this record to the given output iterator, in order from oldest to newest.
Definition at line 1928 of file KnowledgeBase.h.
|
inline |
Copy the given range of history to the output iterator given.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 1911 of file KnowledgeBase.h.
|
inline |
Return the given entry in this record's history.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 1959 of file KnowledgeBase.h.
|
inline |
Return a copy of the given range of history in a vector.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 1942 of file KnowledgeBase.h.
|
inline |
Get a copy of the entire stored history of this record.
Definition at line 2230 of file KnowledgeBase.h.
|
inline |
Get a copy of the entire stored history of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 2245 of file KnowledgeBase.h.
|
inline |
Copy the stored history of this record to the given output iterator, in order from oldest to newest.
Definition at line 2277 of file KnowledgeBase.h.
|
inline |
Copy the given range of history to the output iterator given.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 2260 of file KnowledgeBase.h.
|
inline |
Return the given entry in this record's history.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 2308 of file KnowledgeBase.h.
|
inline |
Return a copy of the given range of history in a vector.
Indexing starts from oldest history entry in the buffer at index 0. Negative indices count from newest entries (-1 is newest).
Definition at line 2291 of file KnowledgeBase.h.
|
inline |
Return the maximum amount of history this record can hold.
Use set_history_capacity to adjust this.
Definition at line 1648 of file KnowledgeBase.h.
|
inline |
Return the maximum amount of history this record can hold.
Use set_history_capacity to adjust this.
Definition at line 1993 of file KnowledgeBase.h.
|
inline |
Return the amount of history this record holds.
Definition at line 1637 of file KnowledgeBase.h.
|
inline |
Return the amount of history this record holds.
Definition at line 1982 of file KnowledgeBase.h.
|
inline |
Returns the unique host and ephemeral binding for this Knowlede Base.
Definition at line 1412 of file KnowledgeBase.inl.
|
inline |
Gets the log level.
Definition at line 145 of file KnowledgeBase.inl.
|
inline |
Gets the logger used for information printing.
Definition at line 161 of file KnowledgeBase.inl.
|
inline |
Creates an iteration of VariableReferences to all keys matching the prefix and suffix.
prefix | string that the key must start with |
suffix | string that the key must end with |
matches | all VariableReferences matching the prefix and suffix |
Definition at line 1455 of file KnowledgeBase.inl.
|
inline |
Return the newest stored history entry of this record.
Definition at line 1800 of file KnowledgeBase.h.
|
inline |
Return the newest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord)
Definition at line 1813 of file KnowledgeBase.h.
|
inline |
Copy the newest stored history entry of this record to the given output iterator.
Definition at line 1763 of file KnowledgeBase.h.
|
inline |
Copy the newest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest.
Definition at line 1745 of file KnowledgeBase.h.
|
inline |
Copy the count newest stored history entries of this record to the given output iterator, in order from oldest to newest.
Definition at line 1730 of file KnowledgeBase.h.
|
inline |
Return the count newest stored history entries of this record in a vector.
Definition at line 1854 of file KnowledgeBase.h.
|
inline |
Return the count newest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 1869 of file KnowledgeBase.h.
|
inline |
Return the newest stored history entry of this record.
Definition at line 2147 of file KnowledgeBase.h.
|
inline |
Return the newest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord)
Definition at line 2160 of file KnowledgeBase.h.
|
inline |
Copy the newest stored history entry of this record to the given output iterator.
Definition at line 2110 of file KnowledgeBase.h.
|
inline |
Copy the newest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest.
Definition at line 2092 of file KnowledgeBase.h.
|
inline |
Copy the count newest stored history entries of this record to the given output iterator, in order from oldest to newest.
Definition at line 2076 of file KnowledgeBase.h.
|
inline |
Return the count newest stored history entries of this record in a vector.
Definition at line 2202 of file KnowledgeBase.h.
|
inline |
Return the count newest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 2218 of file KnowledgeBase.h.
|
inline |
Gets the number of transports.
Definition at line 1269 of file KnowledgeBase.inl.
|
inline |
Return the oldest stored history entry of this record.
Definition at line 1775 of file KnowledgeBase.h.
|
inline |
Return the oldest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord)
Definition at line 1788 of file KnowledgeBase.h.
|
inline |
Copy the oldest stored history entry of this record to the given output iterator.
Definition at line 1716 of file KnowledgeBase.h.
|
inline |
Copy the oldest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest.
Definition at line 1698 of file KnowledgeBase.h.
|
inline |
Copy the count oldest stored history entries of this record to the given output iterator, in order from oldest to newest.
Definition at line 1683 of file KnowledgeBase.h.
|
inline |
Return the count oldest stored history entries of this record in a vector.
Definition at line 1826 of file KnowledgeBase.h.
|
inline |
Return the count oldest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 1841 of file KnowledgeBase.h.
|
inline |
Return the oldest stored history entry of this record.
Definition at line 2122 of file KnowledgeBase.h.
|
inline |
Return the oldest stored history entry of this record as the type given (which must support knowledge_cast<> from a KnowledgeRecord)
Definition at line 2135 of file KnowledgeBase.h.
|
inline |
Copy the oldest stored history entry of this record to the given output iterator.
Definition at line 2062 of file KnowledgeBase.h.
|
inline |
Copy the oldest stored history entries of this record to the given output iterator, up to the given ending iterator, in order from oldest to newest.
Definition at line 2044 of file KnowledgeBase.h.
|
inline |
Copy the count oldest stored history entries of this record to the given output iterator, in order from oldest to newest.
Definition at line 2028 of file KnowledgeBase.h.
|
inline |
Return the count oldest stored history entries of this record in a vector.
Definition at line 2173 of file KnowledgeBase.h.
|
inline |
Return the count oldest stored history entries of this record in a vector of the given element type, which must support knoweldge_cast<> from KnowledgeRecord.
Definition at line 2189 of file KnowledgeBase.h.
|
inline |
Atomically returns a reference to the variable.
Variable references are efficient mechanisms for reference variables individually–similar to speedups seen from CompiledExpression.
key | unique identifier of the variable |
settings | settings for referring to knowledge variables |
Definition at line 272 of file KnowledgeBase.inl.
|
inline |
Return true if this record has a circular buffer history.
Use set_history_capacity to add a buffer
Definition at line 1627 of file KnowledgeBase.h.
|
inline |
Return true if this record has a circular buffer history.
Use set_history_capacity to add a buffer
Definition at line 1972 of file KnowledgeBase.h.
|
inline |
Definition at line 1522 of file KnowledgeBase.h.
|
inline |
Definition at line 1556 of file KnowledgeBase.h.
|
inline |
Definition at line 1573 of file KnowledgeBase.h.
|
inline |
Definition at line 1539 of file KnowledgeBase.h.
|
inline |
Loads the context from a file.
checkpoint_settings | checkpoint settings to load |
update_settings | settings for applying the updates |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1708 of file KnowledgeBase.inl.
|
inline |
Loads the context from a file.
filename | name of the file to open |
use_id | if true, sets the unique identifier to the one found in the saved context. If false, keeps the default identifier. |
settings | settings to use when applying updates to context |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1673 of file KnowledgeBase.inl.
|
inline |
Loads the context from a file.
filename | name of the file to open |
meta | a file header that will contain metadata such as originator, timestamp, lamport clock, etc. |
use_id | if true, sets the unique identifier to the one found in the saved context. If false, keeps the default identifier. |
settings | settings for applying the update |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1691 of file KnowledgeBase.inl.
|
inline |
Locks the context to prevent updates over the network.
Definition at line 121 of file KnowledgeBase.inl.
|
inline |
Marks the variable as updated.
name | name of the variable |
settings | settings for applying the update |
Definition at line 495 of file KnowledgeBase.inl.
|
inline |
Marks the variable reference as updated.
variable | reference to a variable ( |
settings | settings for applying the update |
Definition at line 482 of file KnowledgeBase.inl.
|
inline |
Alias for apply_modified.
settings | Settings for evaluating and printing |
Definition at line 1793 of file KnowledgeBase.inl.
|
default |
Assigns another instance's knowledge and settings to this instance.
original | knowledge base to copy |
|
inline |
Expands and prints a user provided statement at a logging level.
For example, if the statement were MyKnowledge.{.id}, and .id==1, then the statement would be expanded to MyKnowledge.1
statement | statement to expand with variable values |
level | level to log the knowledge at |
Definition at line 984 of file KnowledgeBase.inl.
|
inline |
Prints all knowledge variables and values in the context.
level | level to log the knowledge at |
Definition at line 944 of file KnowledgeBase.inl.
|
inline |
Deprecated alias for.
level | level to log the knowledge at |
Definition at line 956 of file KnowledgeBase.inl.
|
inline |
Read a file into the knowledge base.
filename | file to read |
knowledge_key | key to store the file into |
settings | settings to use when evaluating/updating |
Definition at line 341 of file KnowledgeBase.inl.
|
inline |
Atomically reads a file into a variable.
variable | reference to a variable ( |
filename | file to read |
settings | settings for applying the update |
Definition at line 358 of file KnowledgeBase.inl.
|
inline |
Releases a recursive lock on the knowledge base.
This will allow other thread to access the knowledge base if you had previously called @ acquire.
Definition at line 1050 of file KnowledgeBase.inl.
|
inline |
Removes a transport.
index | index of the transport to remove. If invalid, nothing is removed. |
Definition at line 1294 of file KnowledgeBase.inl.
|
inline |
Resets the local changed map, which tracks checkpointing modifieds.
Definition at line 1769 of file KnowledgeBase.inl.
|
inline |
Retrieves a value at a specified index within a knowledge array.
key | knowledge location |
index | index within the array |
settings | settings for referring to knowledge variables |
Definition at line 306 of file KnowledgeBase.inl.
|
inline |
Retrieves a value at a specified index within a knowledge array.
variable | reference to a variable ( |
index | index within the array |
settings | settings for referring to knowledge variables |
Definition at line 323 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file as JSON.
settings | the settings to save |
Definition at line 1589 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file as JSON.
filename | name of the file to save to |
Definition at line 1573 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file as karl assignments, rather than binary.
settings | the settings to save |
Definition at line 1622 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file as karl assignments, rather than binary.
filename | name of the file to save to |
Definition at line 1606 of file KnowledgeBase.inl.
|
inline |
Saves a checkpoint of a list of changes to a file.
settings | checkpoint settings to load |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1656 of file KnowledgeBase.inl.
|
inline |
Saves a checkpoint of a list of changes to a file.
filename | name of the file to open |
reset_modifieds | if true, resets the modified list to empty. |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1639 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file.
settings | the settings to save |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1557 of file KnowledgeBase.inl.
|
inline |
Saves the context to a file.
filename | name of the file to save to |
exceptions::MemoryException | not enough buffer to encode |
Definition at line 1541 of file KnowledgeBase.inl.
|
inline |
Saves the list of modified records to use later for resending.
This does not clear the modified list. This feature is useful if you want to remember what has been modified and then resend later, e.g., if you believe packets may be dropped and want to resend information. Use this function in conjunction with
Definition at line 1363 of file KnowledgeBase.inl.
|
inline |
Sends all modified variables through the attached transports.
prefix | for logging purposes, the descriptor prefix for calling method |
settings | settings for sending modifications |
Definition at line 1379 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of doubles to set at the location |
size | number of elements in the array |
settings | settings for applying the update |
Definition at line 720 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an integer 1.
key | the name of the variable |
settings | settings for applying the update |
Definition at line 906 of file KnowledgeBase.h.
|
inline |
Atomically sets the value of a variable to a KnowledgeRecord.
key | the variable name |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 525 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of integers to set at the location |
size | number of elements in the array |
settings | settings for applying the update |
Definition at line 614 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | value to set at location |
settings | settings for applying the update |
Definition at line 822 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of doubles to set at the location |
settings | settings for applying the update |
Definition at line 754 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of integers to set at the location |
settings | settings for applying the update |
Definition at line 650 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a KnowledgeRecord.
key | the variable name |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 542 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | value to set at location |
settings | settings for applying the update |
Definition at line 856 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of doubles to set at the location |
settings | settings for applying the update |
Definition at line 771 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | array of integers to set at the location |
settings | settings for applying the update |
Definition at line 686 of file KnowledgeBase.inl.
|
inline |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | value to set at location |
settings | settings for applying the update |
Definition at line 41 of file KnowledgeBase.inl.
int madara::knowledge::KnowledgeBase::set | ( | const std::string & | key, |
T | value, | ||
const EvalSettings & | settings = EvalSettings(true, false, true, false, false) |
||
) |
Sets a knowledge variable to a specified value.
key | knowledge variable location |
value | value to set at location |
settings | settings for applying the update |
|
inline |
Atomically sets the value of a variable to a double array.
variable | reference to a variable ( |
value | an array of doubles |
size | number of elements in the array |
settings | settings for applying the update |
Definition at line 737 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an integer 1.
variable | reference to a variable ( |
settings | settings for applying the update |
Definition at line 476 of file KnowledgeBase.h.
|
inline |
Atomically sets the value of a variable to a KnowledgeRecord.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 559 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an integer array.
variable | reference to a variable ( |
value | an array of Integers |
size | number of elements in the array |
settings | settings for applying the update |
Definition at line 632 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a string.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 839 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a double array.
variable | reference to a variable ( |
value | a STL vector of doubles |
settings | settings for applying the update |
Definition at line 788 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an integer array.
variable | reference to a variable ( |
value | a STL vector of Integers |
settings | settings for applying the update |
Definition at line 668 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a KnowledgeRecord.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 508 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a string.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 873 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a double array.
variable | reference to a variable ( |
value | a STL vector of doubles |
settings | settings for applying the update |
Definition at line 805 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an integer array.
variable | reference to a variable ( |
value | a STL vector of Integers |
settings | settings for applying the update |
Definition at line 703 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a double.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
Definition at line 60 of file KnowledgeBase.inl.
int madara::knowledge::KnowledgeBase::set | ( | const VariableReference & | variable, |
T | value, | ||
const EvalSettings & | settings = EvalSettings(true, false, true, false, false) |
||
) |
Atomically sets the value of a variable to an integer.
variable | reference to a variable ( |
value | new value of the variable |
settings | settings for applying the update |
|
inline |
Atomically sets the value of a variable to an arbitrary string.
key | name of a variable |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 375 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to an arbitrary string.
variable | reference to a variable ( |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 397 of file KnowledgeBase.inl.
|
inline |
Set the capacity of this record's history circular buffer.
Every modification to this record will write a new entry in this history. Once the capacity is met, the oldest entry will be discarded as new entries are added.
Definition at line 1661 of file KnowledgeBase.h.
|
inline |
Set the capacity of this record's history circular buffer.
Every modification to this record will write a new entry in this history. Once the capacity is met, the oldest entry will be discarded as new entries are added.
Definition at line 2006 of file KnowledgeBase.h.
|
inline |
Sets an index within an array to a specified value.
key | knowledge variable location |
index | index of the location in the array |
value | value to set at location |
settings | settings for applying the update |
Definition at line 577 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of an array index to a value.
variable | reference to a variable ( |
index | index within array |
value | new value of the array index |
settings | settings for applying the update |
Definition at line 595 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a JPEG image.
key | name of a variable |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 414 of file KnowledgeBase.inl.
|
inline |
Atomically sets the value of a variable to a JPEG image.
variable | reference to a variable ( |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 436 of file KnowledgeBase.inl.
|
inline |
Sets the log level.
level | the maximum detail level to print |
Definition at line 185 of file KnowledgeBase.inl.
|
inline |
Sets the quality of writing to a certain variable from this entity.
Set quality of writing to a variable.
key | knowledge variable location |
quality | quality of writing to this location |
settings | settings for referring to knowledge variables |
Definition at line 891 of file KnowledgeBase.inl.
int madara::knowledge::KnowledgeBase::set_text | ( | const VariableReference & | variable, |
const char * | value, | ||
size_t | size, | ||
const EvalSettings & | settings = EvalSettings(true, false, true, false, false) |
||
) |
Atomically sets the value of a variable to a text file's contents.
variable | reference to a variable ( |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
int madara::knowledge::KnowledgeBase::set_xml | ( | const VariableReference & | variable, |
const char * | value, | ||
size_t | size, | ||
const EvalSettings & | settings = EvalSettings(true, false, true, false, false) |
||
) |
Atomically sets the value of a variable to an XML string.
variable | reference to a variable ( |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
|
inline |
Binds to an ephemeral port for unique tie breakers in global ordering.
Call this function if you want to generate a unique id for a custom transport to use (or a built-in transport if you are creating one outside of the KnowledgeBase.
host | unique host identifier string ("" if requesting a generated id. |
Definition at line 1781 of file KnowledgeBase.inl.
|
inline |
Definition at line 319 of file KnowledgeBase.h.
|
inline |
Definition at line 339 of file KnowledgeBase.h.
|
inline |
Definition at line 279 of file KnowledgeBase.h.
|
inline |
Definition at line 299 of file KnowledgeBase.h.
|
inline |
Definition at line 239 of file KnowledgeBase.h.
|
inline |
Definition at line 259 of file KnowledgeBase.h.
|
inline |
Definition at line 199 of file KnowledgeBase.h.
|
inline |
Definition at line 219 of file KnowledgeBase.h.
|
inlineprivate |
Definition at line 1514 of file KnowledgeBase.h.
|
inline |
Creates a variable map with Knowledge Records that begin with the given prefix.
Runs in O(log n + m) time, where n is the size of the KnowledgeBase, and m is the number of matching records
prefix | Prefix string to match with |
Definition at line 1512 of file KnowledgeBase.inl.
|
inline |
Fills a variable map with list of keys according to a matching prefix, suffix, and delimiter hierarchy.
This is useful for understanding the logical hierarchy of your variables (and also a key utility of containers like
prefix | Text that must be present at the front of the key |
delimiter | Text that signifies a logical boundary in hierarchy If empty, no check is performed. |
suffix | Text that must be present at the end of the key. If empty, no check is performed. |
next_keys | The immediate keys in the hierarchy after prefix |
result | The map that will be filled with full variable names and the Knowledge Records that correspond to |
just_keys | if true, do not fill result, only next_keys |
Definition at line 1491 of file KnowledgeBase.inl.
|
inline |
Fills a variable map with Knowledge Records that match an expression.
At the moment, this expression must be of the form "subject*"
subject | An expression that matches the variable names that are of interest. Wildcards may only be at the end. |
target | The map that will be filled with variable names and the Knowledge Records they correspond to |
Definition at line 1474 of file KnowledgeBase.inl.
|
inline |
Creates a map with Knowledge Records that begin with the given prefix.
Runs in O(log n + m) time, where n is the size of the KnowledgeBase, and m is the number of matching records
All key names have the "prefix" portion stripped off their front in the returned map.
prefix | Prefix string to match with |
Definition at line 1526 of file KnowledgeBase.inl.
|
inline |
Saves all keys and values into a string, using the underlying knowledge::KnowledgeRecord::to_string function.
This is an optimized version that allows the specification of a target string to avoid string copying (which can be expensive with longer strings across multiple function boundaries). This function differs from knowledge::KnowledgeRecord to_string in that it is intended to save the database in a format that can be easily parseable. Consequently, strings are delineated in this function by being included in single quotes. Arrays are delineated with array indices [].
This is not appropriate for saving the context if it has binary data inside of it, as only the size of the data entry would be saved.
target | where to store the resulting string operation. |
array_delimiter | for any arrays, the characters in between data elements. |
record_delimiter | the characters to place between individual key/value pairs |
key_val_delimiter | the characters to place between keys and values. |
Definition at line 968 of file KnowledgeBase.inl.
|
inline |
Fills a vector with Knowledge Records that begin with a common subject and have a finite range of integer values.
subject | The common subject of the variable names. For instance, if we are looking for a range of vars like "var0", "var1", "var2", then the common subject would be "var". |
start | An inclusive start index |
end | An inclusive end index |
target | The vector that will be filled with Knowledge Record instances within the subject range. |
Definition at line 1438 of file KnowledgeBase.inl.
|
inline |
Definition at line 938 of file KnowledgeBase.inl.
|
inline |
Unlocks the context to allow updates over the network (is only necessary if the context has been explicitly locked)
Definition at line 133 of file KnowledgeBase.inl.
|
inline |
Refer to and use another knowledge base's context.
original | knowledge base to refer to |
Definition at line 115 of file KnowledgeBase.inl.
KnowledgeRecord madara::knowledge::KnowledgeBase::wait | ( | CompiledExpression & | expression, |
const WaitSettings & | settings = WaitSettings() |
||
) |
Waits for an expression to be non-zero.
Provides additional settings for fine-tuning the time to wait and atomic print statements.
expression | KaRL expression to wait on (result of compile) |
settings | Settings for the underlying expression evaluation and printing |
exceptions::KarlException | failure during compile/evaluate |
The only situation this can be useful will be if the thread safe context is being used as a shared memory structure between threads. This should not be used for processes communicating together because the wait statement is unable to send modifieds as it has zero concept of transports. The type of knowledge base handled here is a facade for another knowledge base's context.
Definition at line 24 of file KnowledgeBase.cpp.
|
inline |
Waits for an expression to be non-zero.
Always disseminates modifications.
expression | KaRL expression to wait on |
settings | Settings for the underlying expression evaluation and printing |
exceptions::KarlException | failure during compile/evaluate |
Definition at line 1229 of file KnowledgeBase.inl.
|
inline |
Wait for a change to happen to the context (e.g., from transports)
Definition at line 1757 of file KnowledgeBase.inl.
|
inline |
Write a file from the knowledge base to a specified location.
filename | file to write to |
knowledge_key | key to read the file from |
Definition at line 453 of file KnowledgeBase.inl.
|
private |
A knowledge base can also be a facade for another knowledge base.
Definition at line 2345 of file KnowledgeBase.h.
|
private |
Pointer to actual implementation, i.e., the "bridge", which is reference counted to automate memory management.
Definition at line 2342 of file KnowledgeBase.h.