mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 01:58:20 +00:00
it compiles :)
But that's all, not tested, don't expect it to do anything but crash.
This commit is contained in:
parent
238e9545c0
commit
8385d5bb2d
7 changed files with 258 additions and 67 deletions
|
@ -1,28 +1,117 @@
|
|||
// See the file "COPYING" in the main distribution directory for copyright.
|
||||
|
||||
#ifndef INPUT_READERFRONTEND_H
|
||||
#define INPUT_READERFRONTEND_H
|
||||
|
||||
#include "Manager.h"
|
||||
|
||||
#include "ReaderFrontend.h"
|
||||
#include "ReaderBackend.h"
|
||||
#include "threading/MsgThread.h"
|
||||
|
||||
namespace logging {
|
||||
|
||||
class ReaderBackend;
|
||||
|
||||
class ReaderFrontend {
|
||||
|
||||
ReaderFrontend(bro_int_t type);
|
||||
|
||||
virtual ~ReaderFrontend();
|
||||
namespace input {
|
||||
|
||||
|
||||
protected:
|
||||
friend class Manager;
|
||||
class InitMessage : public threading::InputMessage<ReaderBackend>
|
||||
{
|
||||
public:
|
||||
InitMessage(ReaderBackend* backend, const string source)
|
||||
: threading::InputMessage<ReaderBackend>("Init", backend),
|
||||
source(source) { }
|
||||
|
||||
virtual bool Process() { return Object()->Init(source); }
|
||||
|
||||
private:
|
||||
const string source;
|
||||
};
|
||||
|
||||
class UpdateMessage : public threading::InputMessage<ReaderBackend>
|
||||
{
|
||||
public:
|
||||
UpdateMessage(ReaderBackend* backend)
|
||||
: threading::InputMessage<ReaderBackend>("Update", backend)
|
||||
{ }
|
||||
|
||||
virtual bool Process() { return Object()->Update(); }
|
||||
};
|
||||
|
||||
class FinishMessage : public threading::InputMessage<ReaderBackend>
|
||||
{
|
||||
public:
|
||||
FinishMessage(ReaderBackend* backend)
|
||||
: threading::InputMessage<ReaderBackend>("Finish", backend)
|
||||
{ }
|
||||
|
||||
virtual bool Process() { Object()->Finish(); return true; }
|
||||
};
|
||||
|
||||
class AddFilterMessage : public threading::InputMessage<ReaderBackend>
|
||||
{
|
||||
public:
|
||||
AddFilterMessage(ReaderBackend* backend, const int id, const int num_fields, const threading::Field* const* fields)
|
||||
: threading::InputMessage<ReaderBackend>("AddFilter", backend),
|
||||
id(id), num_fields(num_fields), fields(fields) { }
|
||||
|
||||
virtual bool Process() { return Object()->AddFilter(id, num_fields, fields); }
|
||||
|
||||
private:
|
||||
const int id;
|
||||
const int num_fields;
|
||||
const threading::Field* const* fields;
|
||||
};
|
||||
|
||||
ReaderFrontend::ReaderFrontend(bro_int_t type) {
|
||||
disabled = initialized = false;
|
||||
ty_name = "<not set>";
|
||||
backend = input_mgr->CreateBackend(this, type);
|
||||
|
||||
assert(backend);
|
||||
backend->Start();
|
||||
}
|
||||
|
||||
ReaderFrontend::~ReaderFrontend() {
|
||||
}
|
||||
|
||||
void ReaderFrontend::Init(string arg_source) {
|
||||
if ( disabled )
|
||||
return;
|
||||
|
||||
if ( initialized )
|
||||
reporter->InternalError("writer initialize twice");
|
||||
|
||||
source = arg_source;
|
||||
initialized = true;
|
||||
|
||||
backend->SendIn(new InitMessage(backend, arg_source));
|
||||
}
|
||||
|
||||
void ReaderFrontend::Update() {
|
||||
if ( disabled )
|
||||
return;
|
||||
|
||||
backend->SendIn(new UpdateMessage(backend));
|
||||
}
|
||||
|
||||
void ReaderFrontend::Finish() {
|
||||
if ( disabled )
|
||||
return;
|
||||
|
||||
backend->SendIn(new FinishMessage(backend));
|
||||
}
|
||||
|
||||
void ReaderFrontend::AddFilter(const int id, const int arg_num_fields, const threading::Field* const* fields) {
|
||||
if ( disabled )
|
||||
return;
|
||||
|
||||
backend->SendIn(new AddFilterMessage(backend, id, arg_num_fields, fields));
|
||||
}
|
||||
|
||||
string ReaderFrontend::Name() const
|
||||
{
|
||||
if ( source.size() )
|
||||
return ty_name;
|
||||
|
||||
return ty_name + "/" + source;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif /* INPUT_READERFRONTEND_H */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue