class PerfIdleHandler : public DataHandler
{
public:
- PerfIdleHandler(PerfMonitor& p) : DataHandler(PERF_NAME), perf_monitor(p)
- { DataBus::subscribe_network(intrinsic_pub_key, IntrinsicEventIds::THREAD_IDLE, this); }
+ PerfIdleHandler(PerfMonitor& p, SnortConfig& sc) : DataHandler(PERF_NAME), perf_monitor(p)
+ { DataBus::subscribe_global(intrinsic_pub_key, IntrinsicEventIds::THREAD_IDLE, this, sc); }
void handle(DataEvent&, Flow*) override
{ perf_monitor.eval(nullptr); }
class PerfRotateHandler : public DataHandler
{
public:
- PerfRotateHandler(PerfMonitor& p) : DataHandler(PERF_NAME), perf_monitor(p)
- { DataBus::subscribe_network(intrinsic_pub_key, IntrinsicEventIds::THREAD_ROTATE, this); }
+ PerfRotateHandler(PerfMonitor& p, SnortConfig& sc) : DataHandler(PERF_NAME), perf_monitor(p)
+ { DataBus::subscribe_global(intrinsic_pub_key, IntrinsicEventIds::THREAD_ROTATE, this, sc); }
void handle(DataEvent&, Flow*) override
{ perf_monitor.rotate(); }
class FlowIPDataHandler : public DataHandler
{
public:
- FlowIPDataHandler(PerfMonitor& p) : DataHandler(PERF_NAME), perf_monitor(p)
- { DataBus::subscribe_network(intrinsic_pub_key, IntrinsicEventIds::FLOW_STATE_CHANGE, this); }
+ FlowIPDataHandler(PerfMonitor& p, SnortConfig& sc) : DataHandler(PERF_NAME), perf_monitor(p)
+ { DataBus::subscribe_global(intrinsic_pub_key, IntrinsicEventIds::FLOW_STATE_CHANGE, this, sc); }
void handle(DataEvent&, Flow* flow) override
{
// type and version fields immediately after timestamp like seconds, usec,
// type, version#, data1, data2, ...
-bool PerfMonitor::configure(SnortConfig*)
+bool PerfMonitor::configure(SnortConfig* sc)
{
- new PerfIdleHandler(*this);
- new PerfRotateHandler(*this);
- new FlowIPDataHandler(*this);
+ new PerfIdleHandler(*this, *sc);
+ new PerfRotateHandler(*this, *sc);
+ new FlowIPDataHandler(*this, *sc);
return config->resolve();
}