Remove variant from StdFunctionStmt

The variant ended up conflicting with std::bind, which resulted in failures
on the btest invoking it. Change back to a single function that takes a
flow, and default it to a value in Exec.
This commit is contained in:
Tim Wojtulewicz 2024-03-19 09:07:45 -07:00
parent 8bfe32e931
commit 9de1dd16d5
6 changed files with 14 additions and 17 deletions

View file

@ -15,17 +15,17 @@ Foo::Foo(zeek::Connection* conn) : zeek::analyzer::tcp::TCP_ApplicationAnalyzer(
auto handler = zeek::event_registry->Lookup("connection_established");
if ( handler ) {
handler->GetFunc()->AddBody([](const zeek::Args& args) {
handler->GetFunc()->AddBody([](const zeek::Args& args, zeek::detail::StmtFlowType& flow) {
printf("c++ connection_established lambda handler, received %zu arguments\n", args.size());
});
handler->GetFunc()->AddBody(std::bind(&Foo::ConnectionEstablishedHandler, this, _1));
handler->GetFunc()->AddBody(std::bind(&Foo::ConnectionEstablishedHandler, this, _1, _2));
}
}
Foo::~Foo() { delete interp; }
void Foo::ConnectionEstablishedHandler(const zeek::Args& args) {
void Foo::ConnectionEstablishedHandler(const zeek::Args& args, zeek::detail::StmtFlowType& flow) {
printf("c++ connection_established member handler, received %zu arguments\n", args.size());
}

View file

@ -1,6 +1,7 @@
#pragma once
#include "Stmt.h"
#include "analyzer/protocol/pia/PIA.h"
#include "analyzer/protocol/tcp/TCP.h"
@ -23,7 +24,7 @@ public:
virtual void EndpointEOF(bool is_orig);
static zeek::analyzer::Analyzer* Instantiate(zeek::Connection* conn) { return new Foo(conn); }
void ConnectionEstablishedHandler(const zeek::Args& args);
void ConnectionEstablishedHandler(const zeek::Args& args, zeek::detail::StmtFlowType& flow);
protected:
binpac::Foo::Foo_Conn* interp;