mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 01:28:20 +00:00
logging/Manager: Make LogDelayExpiredTimer an implementation detail
The only reason this was a private component of Manager was to access the Stream's function. Use a generic callback and a lambda to avoid that exposure.
This commit is contained in:
parent
dfa8bac273
commit
ee65623600
2 changed files with 17 additions and 16 deletions
|
@ -3,6 +3,7 @@
|
||||||
#include "zeek/logging/Manager.h"
|
#include "zeek/logging/Manager.h"
|
||||||
|
|
||||||
#include <broker/endpoint_info.hh>
|
#include <broker/endpoint_info.hh>
|
||||||
|
#include <functional>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
@ -153,6 +154,19 @@ private:
|
||||||
|
|
||||||
const DelayInfoPtr DelayInfo::nil = nullptr;
|
const DelayInfoPtr DelayInfo::nil = nullptr;
|
||||||
|
|
||||||
|
// Timer for the head of the per stream delay queue using an opaque
|
||||||
|
// callback based approach to hide the Stream implementation details.
|
||||||
|
class LogDelayExpiredTimer : public zeek::detail::Timer {
|
||||||
|
public:
|
||||||
|
LogDelayExpiredTimer(std::function<void(double, bool)> dispatch_callback, double t)
|
||||||
|
: Timer(t, zeek::detail::TIMER_LOG_DELAY_EXPIRE), dispatch_callback(dispatch_callback) {}
|
||||||
|
|
||||||
|
void Dispatch(double t, bool is_expire) override { dispatch_callback(t, is_expire); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::function<void(double, bool)> dispatch_callback;
|
||||||
|
};
|
||||||
|
|
||||||
// Helper class for dealing with nested Write() calls.
|
// Helper class for dealing with nested Write() calls.
|
||||||
class ActiveWriteScope {
|
class ActiveWriteScope {
|
||||||
public:
|
public:
|
||||||
|
@ -240,7 +254,7 @@ struct Manager::Stream {
|
||||||
detail::DelayWriteMap delayed_writes;
|
detail::DelayWriteMap delayed_writes;
|
||||||
detail::WriteIdx write_idx = 0;
|
detail::WriteIdx write_idx = 0;
|
||||||
|
|
||||||
Manager::LogDelayExpiredTimer* delay_timer = nullptr;
|
detail::LogDelayExpiredTimer* delay_timer = nullptr;
|
||||||
double max_delay_interval = 0.0;
|
double max_delay_interval = 0.0;
|
||||||
zeek_uint_t max_delay_queue_size = 1;
|
zeek_uint_t max_delay_queue_size = 1;
|
||||||
bool evicting = false;
|
bool evicting = false;
|
||||||
|
@ -257,19 +271,6 @@ struct Manager::Stream {
|
||||||
void DispatchDelayExpiredTimer(double t, bool is_expire);
|
void DispatchDelayExpiredTimer(double t, bool is_expire);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Timer for the head of the per stream delay queue.
|
|
||||||
class Manager::LogDelayExpiredTimer : public zeek::detail::Timer {
|
|
||||||
public:
|
|
||||||
LogDelayExpiredTimer(Manager::Stream* const stream, double t)
|
|
||||||
: Timer(t, zeek::detail::TIMER_LOG_DELAY_EXPIRE), stream(stream) {}
|
|
||||||
|
|
||||||
void Dispatch(double t, bool is_expire) override { stream->DispatchDelayExpiredTimer(t, is_expire); }
|
|
||||||
|
|
||||||
private:
|
|
||||||
Manager::Stream* const stream;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
Manager::Filter::~Filter() {
|
Manager::Filter::~Filter() {
|
||||||
Unref(fval);
|
Unref(fval);
|
||||||
Unref(field_name_map);
|
Unref(field_name_map);
|
||||||
|
@ -389,7 +390,8 @@ void Manager::Stream::ScheduleLogDelayExpiredTimer(double t) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
delay_timer = new LogDelayExpiredTimer(this, t);
|
auto cb = [this](double ts, bool is_expire) { this->DispatchDelayExpiredTimer(ts, is_expire); };
|
||||||
|
delay_timer = new detail::LogDelayExpiredTimer(cb, t);
|
||||||
zeek::detail::timer_mgr->Add(delay_timer);
|
zeek::detail::timer_mgr->Add(delay_timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -372,7 +372,6 @@ private:
|
||||||
struct Filter;
|
struct Filter;
|
||||||
struct Stream;
|
struct Stream;
|
||||||
struct WriterInfo;
|
struct WriterInfo;
|
||||||
class LogDelayExpiredTimer;
|
|
||||||
|
|
||||||
bool TraverseRecord(Stream* stream, Filter* filter, RecordType* rt, TableVal* include, TableVal* exclude,
|
bool TraverseRecord(Stream* stream, Filter* filter, RecordType* rt, TableVal* include, TableVal* exclude,
|
||||||
const std::string& path, const std::list<int>& indices);
|
const std::string& path, const std::list<int>& indices);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue