MADARA  3.1.8
GenericFilters.cpp
Go to the documentation of this file.
1 #include "Arguments.h"
2 #include "GenericFilters.h"
5 #include <sstream>
6 
7 const char * operation_types [] = {
8  "IDLE_OPERATION",
9  "SENDING_OPERATION",
10  "RECEIVING_OPERATION",
11  "REBROADCASTING_OPERATION"
12 };
13 
14 
17  knowledge::Variables & /*vars*/)
18 {
19  // this works because a default record is UNCREATED
21 }
22 
25  knowledge::Variables & /*vars*/)
26 {
28 
29  if (args.size () > 0)
30  {
36  if (!args[0].is_file_type ())
37  {
38  result = args[0];
39  }
40  }
41 
46  return result;
47 }
48 
49 
52  knowledge::Variables & /*vars*/)
53 {
55 
56  if (args.size () > 0)
57  {
63  if (args[0].is_file_type ())
64  {
65  result = args[0];
66  }
67  }
68 
73  return result;
74 }
75 
78  knowledge::Variables & vars)
79 {
81 
82  if (args.size () == madara::filters::TOTAL_ARGUMENTS)
83  {
84  // return the first arg for further processing by other filters
85  result = args[0];
86 
87  std::stringstream buffer;
88  buffer << "Filter args:\n";
89 
90  // [0] Record
91  buffer << " [0:Record]: " ;
92  buffer << args[0].to_string ();
93  buffer << "\n";
94 
95  // [1] Record
96  buffer << " [1:Record Name]: " ;
97  buffer << args[1].to_string ();
98  buffer << "\n";
99 
100  // [2] Operation Type
101  buffer << " [2:Operation Type]: " ;
102  buffer << operation_types [args[2].to_integer ()];
103  buffer << "\n";
104 
105  // [3] Send Bandwidth
106  buffer << " [3:Send Bandwidth]: " ;
107  buffer << args[3].to_integer ();
108  buffer << " B/s\n";
109 
110  // [4] Receive Bandwidth
111  buffer << " [4:Receive Bandwidth]: " ;
112  buffer << args[4].to_integer ();
113  buffer << " B/s\n";
114 
115  // [5] Update Time
116  buffer << " [5:Update Time]: " ;
117  buffer << args[5].to_integer ();
118  buffer << "\n";
119 
120  // [6] Current Time
121  buffer << " [6:Current Time]: " ;
122  buffer << args[6].to_integer ();
123  buffer << "\n";
124 
125  // [7] Knowledge Domain
126  buffer << " [7:Knowledge Domain]: " ;
127  buffer << args[7].to_string ();
128  buffer << "\n";
129 
130  // [8] Knowledge Domain
131  buffer << " [8:Originator]: " ;
132  buffer << args[8].to_string ();
133  buffer << "\n";
134 
135  vars.print (buffer.str (), 0);
136  }
137 
138  return result;
139 }
140 
141 void
143  knowledge::KnowledgeMap & records,
144  const transport::TransportContext & transport_context,
145  knowledge::Variables & vars)
146 {
147  std::stringstream buffer;
148  buffer << "Aggregate Filter Arguments:\n";
149 
150  // Operation Type
151  buffer << " Operation Type: " ;
152  buffer << operation_types [transport_context.get_operation ()];
153  buffer << "\n";
154 
155  // Send Bandwidth
156  buffer << " Send Bandwidth: " ;
157  buffer << transport_context.get_send_bandwidth ();
158  buffer << " B/s\n";
159 
160  // Receive Bandwidth
161  buffer << " Receive Bandwidth: " ;
162  buffer << transport_context.get_receive_bandwidth ();
163  buffer << " B/s\n";
164 
165  // Update Time
166  buffer << " Update Time: " ;
167  buffer << transport_context.get_message_time ();
168  buffer << "\n";
169 
170  // Current Time
171  buffer << " Current Time: " ;
172  buffer << transport_context.get_current_time ();
173  buffer << "\n";
174 
175  // Knowledge Domain
176  buffer << " Knowledge Domain: " ;
177  buffer << transport_context.get_domain ();
178  buffer << "\n";
179 
180  // Originator
181  buffer << " Originator: " ;
182  buffer << transport_context.get_originator ();
183  buffer << "\n";
184 
185  buffer << " Updates:\n" ;
186  if (records.size () > 0)
187  {
188  for (knowledge::KnowledgeMap::const_iterator i = records.begin ();
189  i != records.end (); ++i)
190  {
191  buffer << " " << i->first << " = ";
192  buffer << i->second.to_string () << "\n";
193  }
194  }
195 
196  vars.print (buffer.str (), 0);
197 }
This class encapsulates an entry in a KnowledgeBase.
MADARA_Export knowledge::KnowledgeRecord discard_nonprimitives(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a non-primitive record.
madara::knowledge::KnowledgeRecord KnowledgeRecord
std::vector< KnowledgeRecord > FunctionArguments
Provides context about the transport.
uint64_t get_receive_bandwidth(void) const
Gets the receive bandwidth in bytes per second.
uint64_t get_current_time(void) const
Gets the current timestamp.
int64_t get_operation(void) const
Get operation that the context is performing.
MADARA_Export void log_aggregate(knowledge::KnowledgeMap &records, const transport::TransportContext &transport_context, knowledge::Variables &vars)
Filter for logging aggregate update and context.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
MADARA_Export knowledge::KnowledgeRecord discard_nonfiles(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a non-file record.
uint64_t get_message_time(void) const
Gets the message timestamp.
const char * operation_types[]
MADARA_Export knowledge::KnowledgeRecord discard(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a record.
const std::string & get_domain(void) const
Returns the network domain.
const std::string & get_originator(void) const
Returns the current message originator.
MADARA_Export knowledge::KnowledgeRecord log_args(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for logging args.
std::string to_string(const std::string &delimiter=", ") const
converts the value to a string.
Provides an interface for external functions into the MADARA KaRL variable settings.
void print(unsigned int level=0) const
Prints all variables and values in the context.
uint64_t get_send_bandwidth(void) const
Gets the send/rebroadcast bandwidth in bytes per second.