@@ -251,21 +251,21 @@ size_t matchToContext(void const* data,
251251void sendVariableContextMetrics (VariableContext& context, TimesliceSlot slot,
252252 monitoring::Monitoring& metrics, std::vector<std::string> const & names)
253253{
254- const std::string nullstring{" null" };
254+ static const std::string nullstring{" null" };
255255
256- for (size_t i = 0 ; i < MAX_MATCHING_VARIABLE ; i++) {
257- auto & var = context.get (i);
258- auto & name = names[16 * slot.index + i];
256+ context.publish ([](ContextElement::Value const & var, std::string const & name, void * context) {
257+ monitoring::Monitoring* metrics = reinterpret_cast <monitoring::Monitoring*>(context);
259258 if (auto pval = std::get_if<uint64_t >(&var)) {
260- metrics. send (monitoring::Metric{std::to_string (*pval), name, Verbosity::Debug});
259+ metrics-> send (monitoring::Metric{std::to_string (*pval), name, Verbosity::Debug});
261260 } else if (auto pval = std::get_if<uint32_t >(&var)) {
262- metrics. send (monitoring::Metric{std::to_string (*pval), name, Verbosity::Debug});
261+ metrics-> send (monitoring::Metric{std::to_string (*pval), name, Verbosity::Debug});
263262 } else if (auto pval2 = std::get_if<std::string>(&var)) {
264- metrics. send (monitoring::Metric{*pval2, name, Verbosity::Debug});
263+ metrics-> send (monitoring::Metric{*pval2, name, Verbosity::Debug});
265264 } else {
266- metrics. send (monitoring::Metric{nullstring, name, Verbosity::Debug});
265+ metrics-> send (monitoring::Metric{nullstring, name, Verbosity::Debug});
267266 }
268- }
267+ },
268+ &metrics, slot, names);
269269}
270270
271271void DataRelayer::setOldestPossibleInput (TimesliceId proposed, ChannelIndex channel)
0 commit comments