mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 12:38:20 +00:00
Move telemetry opaques out of OpaqueVal.h
This commit is contained in:
parent
2267de21e6
commit
ec3e68928f
6 changed files with 117 additions and 100 deletions
|
@ -1092,46 +1092,4 @@ ValPtr ParaglobVal::DoClone(CloneState* state) {
|
|||
}
|
||||
}
|
||||
|
||||
std::optional<BrokerData> TelemetryVal::DoSerializeData() const { return std::nullopt; }
|
||||
|
||||
bool TelemetryVal::DoUnserializeData(BrokerDataView) { return false; }
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntCounter>) : OpaqueVal(int_counter_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntCounterFamily>) : OpaqueVal(int_counter_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblCounter>) : OpaqueVal(dbl_counter_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblCounterFamily>) : OpaqueVal(dbl_counter_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntGauge>) : OpaqueVal(int_gauge_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntGaugeFamily>) : OpaqueVal(int_gauge_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblGauge>) : OpaqueVal(dbl_gauge_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblGaugeFamily>) : OpaqueVal(dbl_gauge_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntHistogram>) : OpaqueVal(int_histogram_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntHistogramFamily>)
|
||||
: OpaqueVal(int_histogram_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblHistogram>) : OpaqueVal(dbl_histogram_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblHistogramFamily>)
|
||||
: OpaqueVal(dbl_histogram_metric_family_type) {}
|
||||
|
||||
IMPLEMENT_OPAQUE_VALUE(IntCounterMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntCounterMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblCounterMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblCounterMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntGaugeMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntGaugeMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblGaugeMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblGaugeMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntHistogramMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntHistogramMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblHistogramMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblHistogramMetricFamilyVal)
|
||||
} // namespace zeek
|
||||
|
|
|
@ -443,62 +443,4 @@ private:
|
|||
std::unique_ptr<paraglob::Paraglob> internal_paraglob;
|
||||
};
|
||||
|
||||
/**
|
||||
* Base class for metric handles. Handle types are not serializable.
|
||||
*/
|
||||
class TelemetryVal : public OpaqueVal {
|
||||
protected:
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntCounter>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntCounterFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblCounter>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblCounterFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntGauge>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntGaugeFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblGauge>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblGaugeFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntHistogram>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntHistogramFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblHistogram>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblHistogramFamily>);
|
||||
|
||||
std::optional<BrokerData> DoSerializeData() const override;
|
||||
bool DoUnserializeData(BrokerDataView data) override;
|
||||
};
|
||||
|
||||
template<class Handle>
|
||||
class TelemetryValImpl : public TelemetryVal {
|
||||
public:
|
||||
using HandleType = std::shared_ptr<Handle>;
|
||||
|
||||
explicit TelemetryValImpl(HandleType hdl) : TelemetryVal(hdl), hdl(hdl) {}
|
||||
|
||||
HandleType GetHandle() const noexcept { return hdl; }
|
||||
|
||||
static zeek::OpaqueValPtr OpaqueInstantiate() {
|
||||
reporter->Error("TelemetryValImpl::OpaqueInstantiate is unsupported");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
protected:
|
||||
ValPtr DoClone(CloneState*) override { return make_intrusive<TelemetryValImpl>(hdl); }
|
||||
|
||||
const char* OpaqueName() const override { return Handle::OpaqueName; }
|
||||
|
||||
private:
|
||||
HandleType hdl;
|
||||
};
|
||||
|
||||
using IntCounterMetricVal = TelemetryValImpl<telemetry::IntCounter>;
|
||||
using IntCounterMetricFamilyVal = TelemetryValImpl<telemetry::IntCounterFamily>;
|
||||
using DblCounterMetricVal = TelemetryValImpl<telemetry::DblCounter>;
|
||||
using DblCounterMetricFamilyVal = TelemetryValImpl<telemetry::DblCounterFamily>;
|
||||
using IntGaugeMetricVal = TelemetryValImpl<telemetry::IntGauge>;
|
||||
using IntGaugeMetricFamilyVal = TelemetryValImpl<telemetry::IntGaugeFamily>;
|
||||
using DblGaugeMetricVal = TelemetryValImpl<telemetry::DblGauge>;
|
||||
using DblGaugeMetricFamilyVal = TelemetryValImpl<telemetry::DblGaugeFamily>;
|
||||
using IntHistogramMetricVal = TelemetryValImpl<telemetry::IntHistogram>;
|
||||
using IntHistogramMetricFamilyVal = TelemetryValImpl<telemetry::IntHistogramFamily>;
|
||||
using DblHistogramMetricVal = TelemetryValImpl<telemetry::DblHistogram>;
|
||||
using DblHistogramMetricFamilyVal = TelemetryValImpl<telemetry::DblHistogramFamily>;
|
||||
|
||||
} // namespace zeek
|
||||
|
|
|
@ -3,6 +3,7 @@ zeek_add_subdir_library(
|
|||
SOURCES
|
||||
Manager.cc
|
||||
MetricFamily.cc
|
||||
Opaques.cc
|
||||
ProcessStats.cc
|
||||
BIFS
|
||||
telemetry.bif)
|
||||
|
|
44
src/telemetry/Opaques.cc
Normal file
44
src/telemetry/Opaques.cc
Normal file
|
@ -0,0 +1,44 @@
|
|||
#include "Opaques.h"
|
||||
|
||||
using namespace zeek;
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntCounter>) : OpaqueVal(int_counter_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntCounterFamily>) : OpaqueVal(int_counter_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblCounter>) : OpaqueVal(dbl_counter_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblCounterFamily>) : OpaqueVal(dbl_counter_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntGauge>) : OpaqueVal(int_gauge_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntGaugeFamily>) : OpaqueVal(int_gauge_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblGauge>) : OpaqueVal(dbl_gauge_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblGaugeFamily>) : OpaqueVal(dbl_gauge_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntHistogram>) : OpaqueVal(int_histogram_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::IntHistogramFamily>)
|
||||
: OpaqueVal(int_histogram_metric_family_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblHistogram>) : OpaqueVal(dbl_histogram_metric_type) {}
|
||||
|
||||
TelemetryVal::TelemetryVal(std::shared_ptr<telemetry::DblHistogramFamily>)
|
||||
: OpaqueVal(dbl_histogram_metric_family_type) {}
|
||||
|
||||
// TelemetryVal::TelemetryVal(prometheus::Counter&) : OpaqueVal(
|
||||
|
||||
IMPLEMENT_OPAQUE_VALUE(IntCounterMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntCounterMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblCounterMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblCounterMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntGaugeMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntGaugeMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblGaugeMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblGaugeMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntHistogramMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(IntHistogramMetricFamilyVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblHistogramMetricVal)
|
||||
IMPLEMENT_OPAQUE_VALUE(DblHistogramMetricFamilyVal)
|
71
src/telemetry/Opaques.h
Normal file
71
src/telemetry/Opaques.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
// See the file "COPYING" in the main distribution directory for copyright.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zeek/OpaqueVal.h"
|
||||
#include "zeek/broker/Data.h"
|
||||
|
||||
#include "prometheus/counter.h"
|
||||
#include "prometheus/family.h"
|
||||
|
||||
namespace zeek {
|
||||
|
||||
/**
|
||||
* Base class for metric handles. Handle types are not serializable.
|
||||
*/
|
||||
class TelemetryVal : public OpaqueVal {
|
||||
protected:
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntCounter>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntCounterFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblCounter>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblCounterFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntGauge>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntGaugeFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblGauge>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblGaugeFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntHistogram>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::IntHistogramFamily>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblHistogram>);
|
||||
explicit TelemetryVal(std::shared_ptr<telemetry::DblHistogramFamily>);
|
||||
|
||||
std::optional<BrokerData> DoSerializeData() const override { return std::nullopt; }
|
||||
bool DoUnserializeData(BrokerDataView data) override { return false; }
|
||||
};
|
||||
|
||||
template<class Handle>
|
||||
class TelemetryValImpl : public TelemetryVal {
|
||||
public:
|
||||
using HandleType = std::shared_ptr<Handle>;
|
||||
|
||||
explicit TelemetryValImpl(HandleType hdl) : TelemetryVal(hdl), hdl(hdl) {}
|
||||
|
||||
HandleType GetHandle() const noexcept { return hdl; }
|
||||
|
||||
static zeek::OpaqueValPtr OpaqueInstantiate() {
|
||||
reporter->Error("TelemetryValImpl::OpaqueInstantiate is unsupported");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
protected:
|
||||
ValPtr DoClone(CloneState*) override { return make_intrusive<TelemetryValImpl>(hdl); }
|
||||
|
||||
const char* OpaqueName() const override { return Handle::OpaqueName; }
|
||||
|
||||
private:
|
||||
HandleType hdl;
|
||||
};
|
||||
|
||||
using IntCounterMetricVal = TelemetryValImpl<telemetry::IntCounter>;
|
||||
using IntCounterMetricFamilyVal = TelemetryValImpl<telemetry::IntCounterFamily>;
|
||||
using DblCounterMetricVal = TelemetryValImpl<telemetry::DblCounter>;
|
||||
using DblCounterMetricFamilyVal = TelemetryValImpl<telemetry::DblCounterFamily>;
|
||||
using IntGaugeMetricVal = TelemetryValImpl<telemetry::IntGauge>;
|
||||
using IntGaugeMetricFamilyVal = TelemetryValImpl<telemetry::IntGaugeFamily>;
|
||||
using DblGaugeMetricVal = TelemetryValImpl<telemetry::DblGauge>;
|
||||
using DblGaugeMetricFamilyVal = TelemetryValImpl<telemetry::DblGaugeFamily>;
|
||||
using IntHistogramMetricVal = TelemetryValImpl<telemetry::IntHistogram>;
|
||||
using IntHistogramMetricFamilyVal = TelemetryValImpl<telemetry::IntHistogramFamily>;
|
||||
using DblHistogramMetricVal = TelemetryValImpl<telemetry::DblHistogram>;
|
||||
using DblHistogramMetricFamilyVal = TelemetryValImpl<telemetry::DblHistogramFamily>;
|
||||
|
||||
} // namespace zeek
|
|
@ -17,6 +17,7 @@ enum MetricType %{
|
|||
#include "zeek/telemetry/Gauge.h"
|
||||
#include "zeek/telemetry/Histogram.h"
|
||||
#include "zeek/telemetry/Manager.h"
|
||||
#include "zeek/telemetry/Opaques.h"
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue