1 #ifndef _MADARA_KNOWLEDGE_BASE_H 2 #define _MADARA_KNOWLEDGE_BASE_H 20 #include "madara/MadaraExport.h" 30 #ifdef _MADARA_PYTHON_CALLBACKS_ 31 #include "madara/Boost.h" 32 #include "boost/python/object.hpp" 127 bool clean_copy =
false);
138 void activate_transport (
void);
143 void close_transport (
void);
149 size_t get_num_transports (
void);
206 return impl_->share_string (key, settings);
210 return context_->share_string (key, settings);
226 return impl_->share_string (key, settings);
230 return context_->share_string (key, settings);
247 return impl_->take_string (key, settings);
251 return context_->take_string (key, settings);
268 return impl_->take_string (key, settings);
272 return context_->take_string (key, settings);
282 std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
289 return impl_->share_integers (key, settings);
293 return context_->share_integers (key, settings);
303 std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
310 return impl_->share_integers (key, settings);
314 return context_->share_integers (key, settings);
325 std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
332 return impl_->take_integers (key, settings);
336 return context_->take_integers (key, settings);
347 std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
354 return impl_->take_integers (key, settings);
358 return context_->take_integers (key, settings);
368 std::shared_ptr<std::vector<double>>
375 return impl_->share_doubles (key, settings);
379 return context_->share_doubles (key, settings);
389 std::shared_ptr<std::vector<double>>
396 return impl_->share_doubles (key, settings);
400 return context_->share_doubles (key, settings);
411 std::shared_ptr<std::vector<double>>
418 return impl_->take_doubles (key, settings);
422 return context_->take_doubles (key, settings);
433 std::shared_ptr<std::vector<double>>
440 return impl_->take_doubles (key, settings);
444 return context_->take_doubles (key, settings);
454 std::shared_ptr<std::vector<unsigned char>>
461 return impl_->share_binary (key, settings);
465 return context_->share_binary (key, settings);
475 std::shared_ptr<std::vector<unsigned char>>
482 return impl_->share_binary (key, settings);
486 return context_->share_binary (key, settings);
497 std::shared_ptr<std::vector<unsigned char>>
504 return impl_->take_binary (key, settings);
508 return context_->take_binary (key, settings);
519 std::shared_ptr<std::vector<unsigned char>>
526 return impl_->take_binary (key, settings);
530 return context_->take_binary (key, settings);
669 return set (variable, 1, settings);
680 const std::vector <double> & value,
692 std::vector <double> && value,
705 const double * value,
720 size_t index, T&& value,
732 typename std::enable_if<std::is_floating_point<T>::value,
747 const std::vector <KnowledgeRecord::Integer> & value,
759 std::vector <KnowledgeRecord::Integer> && value,
785 typename std::enable_if<std::is_integral<T>::value,
786 void*>::type =
nullptr>
801 const char * value,
size_t size,
814 const unsigned char * value,
size_t size,
827 const unsigned char * value,
size_t size,
840 const unsigned char * value,
size_t size,
853 const unsigned char * value,
size_t size,
866 const char * value,
size_t size,
908 #ifndef _MADARA_NO_KARL_ 1006 #ifdef _MADARA_JAVA_ 1012 void define_function (
const std::string & name, jobject callable);
1015 #ifdef _MADARA_PYTHON_CALLBACKS_ 1021 void define_function (
const std::string & name, boost::python::object callable);
1040 #endif // _MADARA_NO_KARL_ 1051 template<
typename T,
1052 typename std::enable_if<std::is_integral<T>::value,
1053 void*>::type =
nullptr>
1069 template<
typename T>
1071 size_t index, T&& value,
1101 const std::vector <KnowledgeRecord::Integer> & value,
1115 std::vector <KnowledgeRecord::Integer> && value,
1128 return set (key, 1, settings);
1140 template<
typename T,
1141 typename std::enable_if<std::is_floating_point<T>::value,
1142 void*>::type =
nullptr>
1158 const double * value,
1173 const std::vector <double> & value,
1187 std::vector <double> && value,
1224 void set_quality (
const std::string & key, uint32_t quality,
1288 void print (
unsigned int level = 0)
const;
1295 void print_knowledge (
unsigned int level = 0)
const;
1306 unsigned int level = 0)
const;
1333 const std::string & key_val_delimiter =
"=")
const;
1353 void clear (
bool erase =
false);
1358 void reset_checkpoint (
void)
const;
1363 void clear_map (
void);
1370 void acquire (
void);
1377 void release (
void);
1404 size_t remove_transport (
size_t index);
1418 int get_log_level (
void);
1436 void set_log_level (
int level);
1473 std::vector <KnowledgeRecord> & target);
1486 std::map <std::string, knowledge::KnowledgeRecord> & target);
1507 std::vector <std::string> & next_keys,
1508 std::map <std::string, knowledge::KnowledgeRecord> & result,
1509 bool just_keys =
false);
1539 int64_t save_context (
const std::string & filename)
const;
1555 int64_t save_as_json (
const std::string & filename)
const;
1569 int64_t save_as_karl (
const std::string & filename)
const;
1585 int64_t save_checkpoint (
const std::string & filename,
1586 bool reset_modifieds =
true);
1596 int64_t save_checkpoint (
1608 int64_t load_context (
const std::string & filename,
1626 int64_t load_context (
const std::string & filename,
1667 int send_modifieds (
1668 const std::string & prefix =
"KnowledgeBase::send_modifieds",
1679 void clear_modifieds (
void);
1685 void wait_for_change (
void);
1700 std::shared_ptr <KnowledgeBaseImpl>
impl_;
1712 #endif // _MADARA_KNOWLEDGE_BASE_H This class encapsulates an entry in a KnowledgeBase.
std::map< std::string, bool > CopySet
Typedef for set of copyable keys.
std::shared_ptr< std::vector< unsigned char > > take_binary(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
helper type for specifying template type parameters using a function argument instead of inside expli...
int read_file(const std::string &filename, void *&buffer, size_t &size, bool add_zero_char)
Reads a file into a provided void pointer.
std::shared_ptr< std::vector< unsigned char > > share_binary(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
This class stores variables and their values for use by any entity needing state information in a thr...
std::shared_ptr< std::vector< unsigned char > > take_binary(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
Holds settings for checkpoints to load or save.
Provides knowledge logging services to files and terminals.
Holds basic transport settings.
std::shared_ptr< std::string > share_string(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
Optimized reference to a variable within the knowledge base.
Compiled, optimized KaRL logic.
std::vector< KnowledgeRecord > FunctionArguments
std::shared_ptr< std::vector< double > > take_doubles(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
std::shared_ptr< std::vector< KnowledgeRecord::Integer > > take_integers(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
std::shared_ptr< KnowledgeBaseImpl > impl_
Pointer to actual implementation, i.e., the "bridge", which is reference counted to automate memory m...
std::shared_ptr< std::vector< unsigned char > > share_binary(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
std::shared_ptr< std::vector< double > > share_doubles(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
A multi-threaded logger for logging to one or more destinations.
std::shared_ptr< std::string > share_string(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
std::shared_ptr< std::string > take_string(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
ThreadSafeContext * context_
A knowledge base can also be a facade for another knowledge base.
Holds settings requirements for knowledge, usually in copying.
This class provides a distributed knowledge base to users.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
std::shared_ptr< std::vector< double > > share_doubles(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
An abstract base class defines a simple abstract implementation of an expression tree node...
std::shared_ptr< std::vector< KnowledgeRecord::Integer > > take_integers(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
std::shared_ptr< std::vector< double > > take_doubles(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())
std::shared_ptr< std::vector< KnowledgeRecord::Integer > > share_integers(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
std::vector< VariableReference > VariableReferences
a vector of variable references
Encapsulates settings for an evaluation statement.
MADARA_EXPORT bool exists(const char *originator, uint64_t clock, uint32_t update_number, OriginatorFragmentMap &map)
Checks if a fragment already exists within a fragment map.
Provides functions and classes for the distributed knowledge base.
Settings for applying knowledge updates.
Copyright (c) 2015 Carnegie Mellon University.
Encapsulates settings for a wait statement.
Settings for applying knowledge updates.
Base class from which all transports must be derived.
Provides an interface for external functions into the MADARA KaRL variable settings.
ssize_t write_file(const std::string &filename, void *buffer, size_t size)
Writes a file with provided contents.
std::shared_ptr< std::vector< KnowledgeRecord::Integer > > share_integers(const std::string &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings()) const
std::shared_ptr< std::string > take_string(const VariableReference &key, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings())