simplify the ManaPlugin class, decouple it from the C plugin interface
This commit is contained in:
parent
bfce5e76ab
commit
9c76aa93bf
3 changed files with 35 additions and 47 deletions
|
@ -218,12 +218,12 @@ inline ModuleDataStage make_module_data_stage(const std::string &runName, mana::
|
||||||
|
|
||||||
inline void module_data_stage_begin_run(ModuleDataStage &ctx)
|
inline void module_data_stage_begin_run(ModuleDataStage &ctx)
|
||||||
{
|
{
|
||||||
ctx.sink->begin_run(ctx.sinkContext, ctx.runDescriptor.dump().c_str());
|
ctx.sink->begin_run(ctx.runDescriptor.dump().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void module_data_stage_end_run(ModuleDataStage &ctx)
|
inline void module_data_stage_end_run(ModuleDataStage &ctx)
|
||||||
{
|
{
|
||||||
ctx.sink->end_run(ctx.sinkContext, ctx.runDescriptor.dump().c_str());
|
ctx.sink->end_run(ctx.runDescriptor.dump().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
@ -262,13 +262,13 @@ module_data_stage_process_module_data(ModuleDataStage &ctx, int eventIndex,
|
||||||
extract_module_data(inputData, extractors.at(oi), spans.at(oi));
|
extract_module_data(inputData, extractors.at(oi), spans.at(oi));
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.sink->process_event(ctx.sinkContext, eventIndex, eventInfo.outputArrays.front(),
|
ctx.sink->process_event(eventIndex, eventInfo.outputArrays.front(),
|
||||||
eventInfo.outputArrays.size(), eventInfo.sizeBytes);
|
eventInfo.outputArrays.size(), eventInfo.sizeBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void module_data_stage_process_system_event(ModuleDataStage &ctx, const u32 *data, u32 size)
|
inline void module_data_stage_process_system_event(ModuleDataStage &ctx, const u32 *data, u32 size)
|
||||||
{
|
{
|
||||||
ctx.sink->process_system_event(ctx.sinkContext, data, size);
|
ctx.sink->process_system_event(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ManaCountingSink: public ManaPlugin
|
struct ManaCountingSink: public ManaPlugin
|
||||||
|
@ -278,6 +278,7 @@ struct ManaCountingSink: public ManaPlugin
|
||||||
size_t totalBytes = 0;
|
size_t totalBytes = 0;
|
||||||
size_t systemEventCount = 0;
|
size_t systemEventCount = 0;
|
||||||
size_t systemEventBytes = 0;
|
size_t systemEventBytes = 0;
|
||||||
|
|
||||||
void reset()
|
void reset()
|
||||||
{
|
{
|
||||||
eventCounts.clear();
|
eventCounts.clear();
|
||||||
|
@ -285,13 +286,10 @@ struct ManaCountingSink: public ManaPlugin
|
||||||
totalBytes = 0;
|
totalBytes = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_INIT(init) override { return nullptr; }
|
void init() override {}
|
||||||
|
void shutdown() override {}
|
||||||
MANA_DEFINE_PLUGIN_SHUTDOWN(shutdown) override { (void)context; }
|
void begin_run(const char *descriptor_json) override
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run) override
|
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
auto jRun = nlohmann::json::parse(descriptor_json);
|
auto jRun = nlohmann::json::parse(descriptor_json);
|
||||||
reset();
|
reset();
|
||||||
eventCounts.resize(jRun["events"].size());
|
eventCounts.resize(jRun["events"].size());
|
||||||
|
@ -299,9 +297,8 @@ struct ManaCountingSink: public ManaPlugin
|
||||||
eventArrayIndexHits.resize(eventCounts.size());
|
eventArrayIndexHits.resize(eventCounts.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_END_RUN(end_run) override
|
void end_run(const char *descriptor_json) override
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
auto jRun = nlohmann::json::parse(descriptor_json);
|
auto jRun = nlohmann::json::parse(descriptor_json);
|
||||||
|
|
||||||
spdlog::info("ManaCountingSink: eventCounts=[{}], totalBytes={}, systemEvents={}, "
|
spdlog::info("ManaCountingSink: eventCounts=[{}], totalBytes={}, systemEvents={}, "
|
||||||
|
@ -323,9 +320,10 @@ struct ManaCountingSink: public ManaPlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_EVENT_DATA(process_event) override
|
|
||||||
|
void process_event(uint16_t eventIndex, mana_offset_array_t *arrays, size_t arrayCount,
|
||||||
|
size_t totalBytes) override
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
eventCounts.resize(std::max(eventCounts.size(), static_cast<size_t>(eventIndex + 1)));
|
eventCounts.resize(std::max(eventCounts.size(), static_cast<size_t>(eventIndex + 1)));
|
||||||
eventArrayIndexHits.resize(eventCounts.size());
|
eventArrayIndexHits.resize(eventCounts.size());
|
||||||
eventArrayIndexHits[eventIndex].resize(
|
eventArrayIndexHits[eventIndex].resize(
|
||||||
|
@ -350,9 +348,8 @@ struct ManaCountingSink: public ManaPlugin
|
||||||
this->totalBytes += totalBytes;
|
this->totalBytes += totalBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_SYSTEM_EVENT(process_system_event) override
|
void process_system_event(const uint32_t *data, size_t size) override
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
(void)data;
|
(void)data;
|
||||||
++systemEventCount;
|
++systemEventCount;
|
||||||
systemEventBytes += size * sizeof(u32);
|
systemEventBytes += size * sizeof(u32);
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#ifndef AAB5E4D2_A05B_4F2F_B76A_406A5A569D55
|
#ifndef AAB5E4D2_A05B_4F2F_B76A_406A5A569D55
|
||||||
#define AAB5E4D2_A05B_4F2F_B76A_406A5A569D55
|
#define AAB5E4D2_A05B_4F2F_B76A_406A5A569D55
|
||||||
|
|
||||||
|
#include "mana_api.h"
|
||||||
|
#include "mana_arena.h"
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <mesytec-mnode/mnode_cpp_types.h>
|
#include <mesytec-mnode/mnode_cpp_types.h>
|
||||||
#include <mesytec-mvlc/cpp_compat.h>
|
#include <mesytec-mvlc/cpp_compat.h>
|
||||||
#include <mesytec-mvlc/util/data_filter.h>
|
#include <mesytec-mvlc/util/data_filter.h>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include "mana_api.h"
|
|
||||||
#include "mana_arena.h"
|
|
||||||
|
|
||||||
namespace mesytec::mnode::mana
|
namespace mesytec::mnode::mana
|
||||||
{
|
{
|
||||||
|
@ -129,12 +129,15 @@ inline nlohmann::json make_array_descriptor(const std::string &name, const std::
|
||||||
struct ManaPlugin
|
struct ManaPlugin
|
||||||
{
|
{
|
||||||
virtual ~ManaPlugin() = default;
|
virtual ~ManaPlugin() = default;
|
||||||
virtual MANA_DEFINE_PLUGIN_INIT(init) = 0;
|
|
||||||
virtual MANA_DEFINE_PLUGIN_SHUTDOWN(shutdown) = 0;
|
virtual void init() = 0;
|
||||||
virtual MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run) = 0;
|
virtual void shutdown() = 0;
|
||||||
virtual MANA_DEFINE_PLUGIN_END_RUN(end_run) = 0;
|
virtual void begin_run(const char *descriptor_json) = 0;
|
||||||
virtual MANA_DEFINE_PLUGIN_EVENT_DATA(process_event) = 0;
|
virtual void end_run(const char *descriptor_json) = 0;
|
||||||
virtual MANA_DEFINE_PLUGIN_SYSTEM_EVENT(process_system_event) = 0;
|
virtual void process_event(uint16_t eventIndex, mana_offset_array_t *arrays, size_t arrayCount,
|
||||||
|
size_t totalBytes) = 0;
|
||||||
|
|
||||||
|
virtual void process_system_event(const uint32_t *data, size_t size) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ManaCPlugin: public ManaPlugin
|
struct ManaCPlugin: public ManaPlugin
|
||||||
|
@ -147,35 +150,23 @@ struct ManaCPlugin: public ManaPlugin
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_INIT(init) override { return context_ = plugin_.init(); }
|
void init() override { context_ = plugin_.init(); }
|
||||||
|
void shutdown() override { plugin_.shutdown(context_); }
|
||||||
MANA_DEFINE_PLUGIN_SHUTDOWN(shutdown) override
|
void begin_run(const char *descriptor_json) override
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
plugin_.shutdown(context_);
|
|
||||||
}
|
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run) override
|
|
||||||
{
|
|
||||||
(void)context;
|
|
||||||
plugin_.begin_run(context_, descriptor_json);
|
plugin_.begin_run(context_, descriptor_json);
|
||||||
}
|
}
|
||||||
|
void end_run(const char *descriptor_json) override
|
||||||
MANA_DEFINE_PLUGIN_END_RUN(end_run) override
|
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
plugin_.end_run(context_, descriptor_json);
|
plugin_.end_run(context_, descriptor_json);
|
||||||
}
|
}
|
||||||
|
void process_event(uint16_t eventIndex, mana_offset_array_t *arrays, size_t arrayCount,
|
||||||
MANA_DEFINE_PLUGIN_EVENT_DATA(process_event) override
|
size_t totalBytes) override
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
plugin_.process_event(context_, eventIndex, arrays, arrayCount, totalBytes);
|
plugin_.process_event(context_, eventIndex, arrays, arrayCount, totalBytes);
|
||||||
}
|
}
|
||||||
|
void process_system_event(const uint32_t *data, size_t size) override
|
||||||
MANA_DEFINE_PLUGIN_SYSTEM_EVENT(process_system_event) override
|
|
||||||
{
|
{
|
||||||
(void)context;
|
|
||||||
plugin_.process_system_event(context_, data, size);
|
plugin_.process_system_event(context_, data, size);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -481,13 +481,13 @@ int main(int argc, char *argv[])
|
||||||
// make the analysis instance available to the parser callbacks
|
// make the analysis instance available to the parser callbacks
|
||||||
parserContext->parser.userContext = &mana;
|
parserContext->parser.userContext = &mana;
|
||||||
|
|
||||||
mana.sinkContext = mana.sink->init();
|
mana.sink->init();
|
||||||
mana.sink->begin_run(mana.sinkContext, mana.runDescriptor.dump().c_str());
|
mana.sink->begin_run(mana.runDescriptor.dump().c_str());
|
||||||
|
|
||||||
strategy->run(*listfileContext, *parserContext);
|
strategy->run(*listfileContext, *parserContext);
|
||||||
|
|
||||||
mana.sink->end_run(mana.sinkContext, mana.runDescriptor.dump().c_str());
|
mana.sink->end_run(mana.runDescriptor.dump().c_str());
|
||||||
mana.sink->shutdown(mana.sinkContext);
|
mana.sink->shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue