MADARA  3.2.3
KnowledgeBase.h
Go to the documentation of this file.
1 #ifndef _MADARA_KNOWLEDGE_BASE_H
2 #define _MADARA_KNOWLEDGE_BASE_H
3 
11 #include <ostream>
12 #include <string>
13 #include <map>
14 #include <memory>
15 
20 #include "madara/MadaraExport.h"
28 
29 
30 #ifdef _MADARA_PYTHON_CALLBACKS_
31 #include "madara/Boost.h"
32 #include "boost/python/object.hpp"
33 #endif
34 
35 namespace madara
36 {
37 
38  namespace knowledge
39  {
40 
45  class MADARA_EXPORT KnowledgeBase
46  {
47  public:
51  KnowledgeBase ();
52 
58  KnowledgeBase (const std::string & host, int transport);
59 
66  KnowledgeBase (const std::string & host, int transport,
67  const std::string & domain);
68 
74  KnowledgeBase (const std::string & host,
76 
81  KnowledgeBase (const KnowledgeBase & original) = default;
82 
87  void use (ThreadSafeContext & original);
88 
92  ~KnowledgeBase () = default;
93 
103  void copy (const KnowledgeBase & source,
104  const KnowledgeRequirements & settings);
105 
125  void copy (const KnowledgeBase & source,
126  const CopySet & copy_set = CopySet (),
127  bool clean_copy = false);
128 
133  KnowledgeBase &operator= (const KnowledgeBase & original) = default;
134 
138  void activate_transport (void);
139 
143  void close_transport (void);
144 
149  size_t get_num_transports (void);
150 
154  void lock (void);
155 
160  void unlock (void);
161 
169  const KnowledgeReferenceSettings & settings =
171 
179  get (const VariableReference & variable,
180  const KnowledgeReferenceSettings & settings =
182 
192  get_ref (const std::string & key,
193  const KnowledgeReferenceSettings & settings =
195 
200  std::shared_ptr<std::string> share_string(const std::string & key,
201  const KnowledgeReferenceSettings & settings =
203  {
204  if (impl_)
205  {
206  return impl_->share_string (key, settings);
207  }
208  else if (context_)
209  {
210  return context_->share_string (key, settings);
211  }
212 
213  return nullptr;
214  }
215 
220  std::shared_ptr<std::string> share_string(const VariableReference & key,
221  const KnowledgeReferenceSettings & settings =
223  {
224  if (impl_)
225  {
226  return impl_->share_string (key, settings);
227  }
228  else if (context_)
229  {
230  return context_->share_string (key, settings);
231  }
232 
233  return nullptr;
234  }
235 
241  std::shared_ptr<std::string> take_string(const std::string & key,
242  const KnowledgeReferenceSettings & settings =
244  {
245  if (impl_)
246  {
247  return impl_->take_string (key, settings);
248  }
249  else if (context_)
250  {
251  return context_->take_string (key, settings);
252  }
253 
254  return nullptr;
255  }
256 
262  std::shared_ptr<std::string> take_string(const VariableReference & key,
263  const KnowledgeReferenceSettings & settings =
265  {
266  if (impl_)
267  {
268  return impl_->take_string (key, settings);
269  }
270  else if (context_)
271  {
272  return context_->take_string (key, settings);
273  }
274 
275  return nullptr;
276  }
277 
282  std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
284  const KnowledgeReferenceSettings & settings =
286  {
287  if (impl_)
288  {
289  return impl_->share_integers (key, settings);
290  }
291  else if (context_)
292  {
293  return context_->share_integers (key, settings);
294  }
295 
296  return nullptr;
297  }
298 
303  std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
305  const KnowledgeReferenceSettings & settings =
307  {
308  if (impl_)
309  {
310  return impl_->share_integers (key, settings);
311  }
312  else if (context_)
313  {
314  return context_->share_integers (key, settings);
315  }
316 
317  return nullptr;
318  }
319 
325  std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
327  const KnowledgeReferenceSettings & settings =
329  {
330  if (impl_)
331  {
332  return impl_->take_integers (key, settings);
333  }
334  else if (context_)
335  {
336  return context_->take_integers (key, settings);
337  }
338 
339  return nullptr;
340  }
341 
347  std::shared_ptr<std::vector<KnowledgeRecord::Integer>>
349  const KnowledgeReferenceSettings & settings =
351  {
352  if (impl_)
353  {
354  return impl_->take_integers (key, settings);
355  }
356  else if (context_)
357  {
358  return context_->take_integers (key, settings);
359  }
360 
361  return nullptr;
362  }
363 
368  std::shared_ptr<std::vector<double>>
370  const KnowledgeReferenceSettings & settings =
372  {
373  if (impl_)
374  {
375  return impl_->share_doubles (key, settings);
376  }
377  else if (context_)
378  {
379  return context_->share_doubles (key, settings);
380  }
381 
382  return nullptr;
383  }
384 
389  std::shared_ptr<std::vector<double>>
391  const KnowledgeReferenceSettings & settings =
393  {
394  if (impl_)
395  {
396  return impl_->share_doubles (key, settings);
397  }
398  else if (context_)
399  {
400  return context_->share_doubles (key, settings);
401  }
402 
403  return nullptr;
404  }
405 
411  std::shared_ptr<std::vector<double>>
413  const KnowledgeReferenceSettings & settings =
415  {
416  if (impl_)
417  {
418  return impl_->take_doubles (key, settings);
419  }
420  else if (context_)
421  {
422  return context_->take_doubles (key, settings);
423  }
424 
425  return nullptr;
426  }
427 
433  std::shared_ptr<std::vector<double>>
435  const KnowledgeReferenceSettings & settings =
437  {
438  if (impl_)
439  {
440  return impl_->take_doubles (key, settings);
441  }
442  else if (context_)
443  {
444  return context_->take_doubles (key, settings);
445  }
446 
447  return nullptr;
448  }
449 
454  std::shared_ptr<std::vector<unsigned char>>
456  const KnowledgeReferenceSettings & settings =
458  {
459  if (impl_)
460  {
461  return impl_->share_binary (key, settings);
462  }
463  else if (context_)
464  {
465  return context_->share_binary (key, settings);
466  }
467 
468  return nullptr;
469  }
470 
475  std::shared_ptr<std::vector<unsigned char>>
477  const KnowledgeReferenceSettings & settings =
479  {
480  if (impl_)
481  {
482  return impl_->share_binary (key, settings);
483  }
484  else if (context_)
485  {
486  return context_->share_binary (key, settings);
487  }
488 
489  return nullptr;
490  }
491 
497  std::shared_ptr<std::vector<unsigned char>>
499  const KnowledgeReferenceSettings & settings =
501  {
502  if (impl_)
503  {
504  return impl_->take_binary (key, settings);
505  }
506  else if (context_)
507  {
508  return context_->take_binary (key, settings);
509  }
510 
511  return nullptr;
512  }
513 
519  std::shared_ptr<std::vector<unsigned char>>
521  const KnowledgeReferenceSettings & settings =
523  {
524  if (impl_)
525  {
526  return impl_->take_binary (key, settings);
527  }
528  else if (context_)
529  {
530  return context_->take_binary (key, settings);
531  }
532 
533  return nullptr;
534  }
540  void mark_modified (const VariableReference & variable,
541  const KnowledgeUpdateSettings & settings = KnowledgeUpdateSettings());
542 
548  void mark_modified (const std::string & name,
549  const KnowledgeUpdateSettings & settings = KnowledgeUpdateSettings());
550 
558  madara::knowledge::KnowledgeRecord retrieve_index (const std::string & key,
559  size_t index,
560  const KnowledgeReferenceSettings & settings =
562 
569  int read_file (const std::string & knowledge_key,
570  const std::string & filename,
571  const EvalSettings & settings =
572  EvalSettings (false, false, true, false, false));
573 
581  int
582  read_file (
583  const VariableReference & variable,
584  const std::string & filename,
585  const EvalSettings & settings =
586  EvalSettings (false, false, true, false, false));
587 
595  int set (const VariableReference & variable,
596  const std::string & value,
597  const EvalSettings & settings =
598  EvalSettings (false, false, true, false, false));
599 
607  int set (const VariableReference & variable,
608  std::string && value,
609  const EvalSettings & settings =
610  EvalSettings (false, false, true, false, false));
611 
619  int set (const VariableReference & variable,
620  const KnowledgeRecord & value,
621  const EvalSettings & settings =
622  EvalSettings (false, false, true, false, false));
623 
631  int set (const VariableReference & variable,
632  KnowledgeRecord && value,
633  const EvalSettings & settings =
634  EvalSettings (false, false, true, false, false));
635 
643  int set (const std::string & key,
644  const KnowledgeRecord & value,
645  const EvalSettings & settings =
646  EvalSettings (false, false, true, false, false));
647 
655  int set (const std::string & key,
656  KnowledgeRecord && value,
657  const EvalSettings & settings =
658  EvalSettings (false, false, true, false, false));
659 
666  int set (const VariableReference & variable,
667  const EvalSettings & settings =
668  EvalSettings (false, false, true, false, false)) {
669  return set (variable, 1, settings);
670  }
671 
679  int set (const VariableReference & variable,
680  const std::vector <double> & value,
681  const EvalSettings & settings =
682  EvalSettings (false, false, true, false, false));
683 
691  int set (const VariableReference & variable,
692  std::vector <double> && value,
693  const EvalSettings & settings =
694  EvalSettings (false, false, true, false, false));
695 
704  int set (const VariableReference & variable,
705  const double * value,
706  uint32_t size,
707  const EvalSettings & settings =
708  EvalSettings (false, false, true, false, false));
709 
718  template<typename T>
719  int set_index (const VariableReference & variable,
720  size_t index, T&& value,
721  const EvalSettings & settings =
722  EvalSettings (false, false, true, false, false));
723 
731  template<typename T,
732  typename std::enable_if<std::is_floating_point<T>::value,
733  void*>::type = nullptr>
734  int set (const VariableReference & variable,
735  T value,
736  const EvalSettings & settings =
737  EvalSettings (false, false, true, false, false));
738 
746  int set (const VariableReference & variable,
747  const std::vector <KnowledgeRecord::Integer> & value,
748  const EvalSettings & settings =
749  EvalSettings (false, false, true, false, false));
750 
758  int set (const VariableReference & variable,
759  std::vector <KnowledgeRecord::Integer> && value,
760  const EvalSettings & settings =
761  EvalSettings (false, false, true, false, false));
762 
771  int set (const VariableReference & variable,
773  uint32_t size,
774  const EvalSettings & settings =
775  EvalSettings (false, false, true, false, false));
776 
784  template<typename T,
785  typename std::enable_if<std::is_integral<T>::value,
786  void*>::type = nullptr>
787  int set (const VariableReference & variable,
788  T value,
789  const EvalSettings & settings =
790  EvalSettings (false, false, true, false, false));
791 
800  int set_text (const VariableReference & variable,
801  const char * value, size_t size,
802  const EvalSettings & settings =
803  EvalSettings (false, false, true, false, false));
804 
813  int set_file (const std::string & key,
814  const unsigned char * value, size_t size,
815  const EvalSettings & settings =
816  EvalSettings (false, false, true, false, false));
817 
826  int set_jpeg (const std::string & key,
827  const unsigned char * value, size_t size,
828  const EvalSettings & settings =
829  EvalSettings (false, false, true, false, false));
830 
839  int set_file (const VariableReference & variable,
840  const unsigned char * value, size_t size,
841  const EvalSettings & settings =
842  EvalSettings (false, false, true, false, false));
843 
852  int set_jpeg (const VariableReference & variable,
853  const unsigned char * value, size_t size,
854  const EvalSettings & settings =
855  EvalSettings (false, false, true, false, false));
856 
865  int set_xml (const VariableReference & variable,
866  const char * value, size_t size,
867  const EvalSettings & settings =
868  EvalSettings (false, false, true, false, false));
869 
877  madara::knowledge::KnowledgeRecord retrieve_index (
878  const VariableReference & variable,
879  size_t index,
880  const KnowledgeReferenceSettings & settings =
881  EvalSettings (false, false, true, false, false));
882 
888  ssize_t write_file (const std::string & knowledge_key,
889  const std::string & filename);
890 
899  std::string expand_statement (const std::string & statement);
900 
906  std::string debug_modifieds (void) const;
907 
908 #ifndef _MADARA_NO_KARL_
909 
918  compile (const std::string & expression);
919 
929  const std::string & expression,
930  const EvalSettings & settings =
931  EvalSettings ());
932 
942  CompiledExpression & expression,
943  const EvalSettings & settings =
944  EvalSettings ());
945 
956  const EvalSettings & settings =
957  EvalSettings ());
958 
970  const std::string & expression,
971  const WaitSettings & settings =
972  WaitSettings ());
973 
985  CompiledExpression & expression,
986  const WaitSettings & settings =
987  WaitSettings ());
988 
994  void define_function (const std::string & name,
996 
1003  void define_function (const std::string & name,
1004  knowledge::KnowledgeRecord (*func) (const char *, FunctionArguments &, Variables &));
1005 
1006 #ifdef _MADARA_JAVA_
1007 
1012  void define_function (const std::string & name, jobject callable);
1013 #endif
1014 
1015 #ifdef _MADARA_PYTHON_CALLBACKS_
1016 
1021  void define_function (const std::string & name, boost::python::object callable);
1022 #endif
1023 
1029  void define_function (const std::string & name,
1030  const std::string & expression);
1031 
1037  void define_function (const std::string & name,
1038  const CompiledExpression & expression);
1039 
1040 #endif // _MADARA_NO_KARL_
1041 
1051  template<typename T,
1052  typename std::enable_if<std::is_integral<T>::value,
1053  void*>::type = nullptr>
1054  int set (const std::string & key,
1055  T value,
1056  const EvalSettings & settings =
1057  EvalSettings (false, false, true, false, false));
1058 
1069  template<typename T>
1070  int set_index (const std::string & key,
1071  size_t index, T&& value,
1072  const EvalSettings & settings =
1073  EvalSettings (false, false, true, false, false));
1074 
1085  int set (const std::string & key,
1087  uint32_t size,
1088  const EvalSettings & settings =
1089  EvalSettings (false, false, true, false, false));
1090 
1100  int set (const std::string & key,
1101  const std::vector <KnowledgeRecord::Integer> & value,
1102  const EvalSettings & settings =
1103  EvalSettings (false, false, true, false, false));
1104 
1114  int set (const std::string & key,
1115  std::vector <KnowledgeRecord::Integer> && value,
1116  const EvalSettings & settings =
1117  EvalSettings (false, false, true, false, false));
1118 
1125  int set (const std::string & key,
1126  const EvalSettings & settings =
1127  EvalSettings (false, false, true, false, false)) {
1128  return set (key, 1, settings);
1129  }
1130 
1140  template<typename T,
1141  typename std::enable_if<std::is_floating_point<T>::value,
1142  void*>::type = nullptr>
1143  int set (const std::string & key, T value,
1144  const EvalSettings & settings =
1145  EvalSettings (false, false, true, false, false));
1146 
1157  int set (const std::string & key,
1158  const double * value,
1159  uint32_t size,
1160  const EvalSettings & settings =
1161  EvalSettings (false, false, true, false, false));
1162 
1172  int set (const std::string & key,
1173  const std::vector <double> & value,
1174  const EvalSettings & settings =
1175  EvalSettings (false, false, true, false, false));
1176 
1186  int set (const std::string & key,
1187  std::vector <double> && value,
1188  const EvalSettings & settings =
1189  EvalSettings (false, false, true, false, false));
1190 
1200  int set (const std::string & key, const std::string & value,
1201  const EvalSettings & settings =
1202  EvalSettings (false, false, true, false, false));
1203 
1213  int set (const std::string & key, std::string && value,
1214  const EvalSettings & settings =
1215  EvalSettings (false, false, true, false, false));
1216 
1224  void set_quality (const std::string & key, uint32_t quality,
1225  const KnowledgeReferenceSettings & settings =
1226  KnowledgeReferenceSettings (false));
1227 
1237  std::string setup_unique_hostport (const std::string & host = "");
1238 
1243  madara::transport::TransportSettings & transport_settings (void);
1244 
1252  bool exists (const std::string & key,
1253  const KnowledgeReferenceSettings & settings =
1254  KnowledgeReferenceSettings (false)) const;
1255 
1263  bool exists (const VariableReference & variable,
1264  const KnowledgeReferenceSettings & settings =
1265  KnowledgeReferenceSettings (false)) const;
1266 
1273  int apply_modified (const EvalSettings & settings =
1274  EvalSettings ());
1275 
1281  int modify (const EvalSettings & settings =
1282  EvalSettings ());
1283 
1288  void print (unsigned int level = 0) const;
1289 
1295  void print_knowledge (unsigned int level = 0) const;
1296 
1305  void print (const std::string & statement,
1306  unsigned int level = 0) const;
1307 
1330  void to_string (std::string & target,
1331  const std::string & array_delimiter = ",",
1332  const std::string & record_delimiter = ";\n",
1333  const std::string & key_val_delimiter = "=") const;
1334 
1344  bool clear (const std::string & key,
1345  const KnowledgeReferenceSettings & settings =
1347 
1353  void clear (bool erase = false);
1354 
1358  void reset_checkpoint (void) const;
1359 
1363  void clear_map (void);
1364 
1370  void acquire (void);
1371 
1377  void release (void);
1378 
1386  size_t attach_transport (madara::transport::Base * transport);
1387 
1395  size_t attach_transport (const std::string & id,
1396  transport::TransportSettings & settings);
1397 
1404  size_t remove_transport (size_t index);
1405 
1412  ThreadSafeContext & get_context (void);
1413 
1418  int get_log_level (void);
1419 
1424  void attach_logger (logger::Logger & logger) const;
1425 
1430  logger::Logger & get_logger (void) const;
1431 
1436  void set_log_level (int level);
1437 
1442  std::string get_id (void);
1443 
1451  void get_matches (
1452  const std::string & prefix,
1453  const std::string & suffix,
1454  VariableReferences & matches);
1455 
1470  size_t to_vector (const std::string & subject,
1471  unsigned int start,
1472  unsigned int end,
1473  std::vector <KnowledgeRecord> & target);
1474 
1485  size_t to_map (const std::string & subject,
1486  std::map <std::string, knowledge::KnowledgeRecord> & target);
1487 
1504  size_t to_map (const std::string & prefix,
1505  const std::string & delimiter,
1506  const std::string & suffix,
1507  std::vector <std::string> & next_keys,
1508  std::map <std::string, knowledge::KnowledgeRecord> & result,
1509  bool just_keys = false);
1510 
1519  knowledge::KnowledgeMap to_map (const std::string & prefix) const;
1520 
1532  knowledge::KnowledgeMap to_map_stripped (const std::string &prefix) const;
1533 
1539  int64_t save_context (const std::string & filename) const;
1540 
1548  int64_t save_context (CheckpointSettings & settings) const;
1549 
1555  int64_t save_as_json (const std::string & filename) const;
1556 
1562  int64_t save_as_json (const CheckpointSettings & settings) const;
1563 
1569  int64_t save_as_karl (const std::string & filename) const;
1570 
1576  int64_t save_as_karl (const CheckpointSettings & settings) const;
1577 
1585  int64_t save_checkpoint (const std::string & filename,
1586  bool reset_modifieds = true);
1587 
1596  int64_t save_checkpoint (
1597  CheckpointSettings & settings) const;
1598 
1608  int64_t load_context (const std::string & filename,
1609  bool use_id = true,
1610  const KnowledgeUpdateSettings & settings =
1611  KnowledgeUpdateSettings (true, true, true, false));
1612 
1626  int64_t load_context (const std::string & filename,
1627  FileHeader & meta,
1628  bool use_id = true,
1629  const KnowledgeUpdateSettings & settings =
1630  KnowledgeUpdateSettings (true, true, true, false));
1631 
1640  int64_t load_context (CheckpointSettings & checkpoint_settings,
1641  const KnowledgeUpdateSettings & update_settings =
1642  KnowledgeUpdateSettings (true, true, true, false));
1643 
1648  void add_modifieds (const VariableReferences & modifieds) const;
1649 
1658  VariableReferences save_modifieds (void) const;
1659 
1667  int send_modifieds (
1668  const std::string & prefix = "KnowledgeBase::send_modifieds",
1669  const EvalSettings & settings =
1670  EvalSettings ());
1671 
1679  void clear_modifieds (void);
1680 
1681 
1685  void wait_for_change (void);
1686 
1694  void facade_for (ThreadSafeContext & target);
1695 
1696  private:
1697 
1700  std::shared_ptr <KnowledgeBaseImpl> impl_;
1701 
1704  };
1705 
1706  }
1707 }
1708 
1709 // include the inline functions
1710 #include "KnowledgeBase.inl"
1711 
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())
Defines a file header which is the default for KaRL checkpointing.
Definition: FileHeader.h:36
helper type for specifying template type parameters using a function argument instead of inside expli...
Definition: KnowledgeCast.h:72
int read_file(const std::string &filename, void *&buffer, size_t &size, bool add_zero_char)
Reads a file into a provided void pointer.
Definition: Utility.cpp:480
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.
Definition: GlobalLogger.h:11
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.
Definition: Logger.h:88
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())
static struct madara::knowledge::tags::string_t string
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.
Definition: KnowledgeBase.h:45
::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...
Definition: ComponentNode.h:36
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.
Definition: EvalSettings.h:27
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.
Definition: WaitSettings.h:23
Settings for applying knowledge updates.
Base class from which all transports must be derived.
Definition: Transport.h:45
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.
Definition: Utility.cpp:547
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())