MADARA  3.4.1
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[] = {"IDLE_OPERATION", "SENDING_OPERATION",
8  "RECEIVING_OPERATION", "REBROADCASTING_OPERATION"};
9 
12 {
13  // this works because a default record is UNCREATED
15 }
16 
19 {
21 
22  if (args.size() > 0)
23  {
29  if (!args[0].is_file_type())
30  {
31  result = args[0];
32  }
33  }
34 
39  return result;
40 }
41 
44 {
46 
47  if (args.size() > 0)
48  {
54  if (args[0].is_file_type())
55  {
56  result = args[0];
57  }
58  }
59 
64  return result;
65 }
66 
69 {
71 
72  if (args.size() == madara::filters::TOTAL_ARGUMENTS)
73  {
74  // return the first arg for further processing by other filters
75  result = args[0];
76 
77  std::stringstream buffer;
78  buffer << "Filter args:\n";
79 
80  // [0] Record
81  buffer << " [0:Record]: ";
82  buffer << args[0].to_string();
83  buffer << "\n";
84 
85  // [1] Record
86  buffer << " [1:Record Name]: ";
87  buffer << args[1].to_string();
88  buffer << "\n";
89 
90  // [2] Operation Type
91  buffer << " [2:Operation Type]: ";
92  buffer << operation_types[args[2].to_integer()];
93  buffer << "\n";
94 
95  // [3] Send Bandwidth
96  buffer << " [3:Send Bandwidth]: ";
97  buffer << args[3].to_integer();
98  buffer << " B/s\n";
99 
100  // [4] Receive Bandwidth
101  buffer << " [4:Receive Bandwidth]: ";
102  buffer << args[4].to_integer();
103  buffer << " B/s\n";
104 
105  // [5] Update Time
106  buffer << " [5:Update Time]: ";
107  buffer << args[5].to_integer();
108  buffer << "\n";
109 
110  // [6] Current Time
111  buffer << " [6:Current Time]: ";
112  buffer << args[6].to_integer();
113  buffer << "\n";
114 
115  // [7] Knowledge Domain
116  buffer << " [7:Knowledge Domain]: ";
117  buffer << args[7].to_string();
118  buffer << "\n";
119 
120  // [8] Knowledge Domain
121  buffer << " [8:Originator]: ";
122  buffer << args[8].to_string();
123  buffer << "\n";
124 
125  vars.print(buffer.str(), 0);
126  }
127 
128  return result;
129 }
130 
132  const transport::TransportContext& transport_context,
133  knowledge::Variables& vars)
134 {
135  std::stringstream buffer;
136  buffer << "Aggregate Filter Arguments:\n";
137 
138  // Operation Type
139  buffer << " Operation Type: ";
140  buffer << operation_types[transport_context.get_operation()];
141  buffer << "\n";
142 
143  // Send Bandwidth
144  buffer << " Send Bandwidth: ";
145  buffer << transport_context.get_send_bandwidth();
146  buffer << " B/s\n";
147 
148  // Receive Bandwidth
149  buffer << " Receive Bandwidth: ";
150  buffer << transport_context.get_receive_bandwidth();
151  buffer << " B/s\n";
152 
153  // Update Time
154  buffer << " Update Time: ";
155  buffer << transport_context.get_message_time();
156  buffer << "\n";
157 
158  // Current Time
159  buffer << " Current Time: ";
160  buffer << transport_context.get_current_time();
161  buffer << "\n";
162 
163  // Knowledge Domain
164  buffer << " Knowledge Domain: ";
165  buffer << transport_context.get_domain();
166  buffer << "\n";
167 
168  // Originator
169  buffer << " Originator: ";
170  buffer << transport_context.get_originator();
171  buffer << "\n";
172 
173  buffer << " Updates:\n";
174  if (records.size() > 0)
175  {
176  for (knowledge::KnowledgeMap::const_iterator i = records.begin();
177  i != records.end(); ++i)
178  {
179  buffer << " " << i->first << " = ";
180  buffer << i->second.to_string() << "\n";
181  }
182  }
183 
184  vars.print(buffer.str(), 0);
185 }
const char * operation_types[]
madara::knowledge::KnowledgeRecord KnowledgeRecord
This class encapsulates an entry in a KnowledgeBase.
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.
Definition: Variables.h:53
void print(unsigned int level=0) const
Prints all variables and values in the context.
Definition: Variables.cpp:516
Provides context about the transport.
uint64_t get_send_bandwidth(void) const
Gets the send/rebroadcast bandwidth in bytes per second.
const std::string & get_domain(void) const
Returns the network domain.
int64_t get_operation(void) const
Get operation that the context is performing.
uint64_t get_current_time(void) const
Gets the current timestamp.
const std::string & get_originator(void) const
Returns the current message originator.
uint64_t get_receive_bandwidth(void) const
Gets the receive bandwidth in bytes per second.
uint64_t get_message_time(void) const
Gets the message timestamp.
MADARA_EXPORT knowledge::KnowledgeRecord discard_nonprimitives(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a non-primitive record.
MADARA_EXPORT void log_aggregate(knowledge::KnowledgeMap &records, const transport::TransportContext &transport_context, knowledge::Variables &vars)
Filter for logging aggregate update and context.
MADARA_EXPORT knowledge::KnowledgeRecord log_args(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for logging args.
MADARA_EXPORT knowledge::KnowledgeRecord discard(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a record.
MADARA_EXPORT knowledge::KnowledgeRecord discard_nonfiles(knowledge::FunctionArguments &args, knowledge::Variables &vars)
Filter for discarding a non-file record.
std::vector< KnowledgeRecord > FunctionArguments
::std::map< std::string, KnowledgeRecord > KnowledgeMap