macro_rules! observe_counter {
($name:expr, $($label_key:expr => $label_val:expr),* $(,)?) => {
#[cfg(feature = "observability")]
{
::metrics::counter!($name, $($label_key => $label_val),*).increment(1);
}
#[cfg(not(feature = "observability"))]
{
$(let _ = ($label_key, $label_val);)*
let _ = $name;
}
};
}
macro_rules! observe_counter_add {
($name:expr, $val:expr, $($label_key:expr => $label_val:expr),* $(,)?) => {
#[cfg(feature = "observability")]
{
::metrics::counter!($name, $($label_key => $label_val),*).increment($val);
}
#[cfg(not(feature = "observability"))]
{
$(let _ = ($label_key, $label_val);)*
let _ = ($name, $val);
}
};
}
macro_rules! observe_histogram {
($name:expr, $val:expr, $($label_key:expr => $label_val:expr),* $(,)?) => {
#[cfg(feature = "observability")]
{
::metrics::histogram!($name, $($label_key => $label_val),*).record($val);
}
#[cfg(not(feature = "observability"))]
{
$(let _ = ($label_key, $label_val);)*
let _ = ($name, $val);
}
};
}
macro_rules! observe_gauge_inc {
($name:expr) => {
#[cfg(feature = "observability")]
{
::metrics::gauge!($name).increment(1.0);
}
#[cfg(not(feature = "observability"))]
{
let _ = $name;
}
};
}
macro_rules! observe_gauge_dec {
($name:expr) => {
#[cfg(feature = "observability")]
{
::metrics::gauge!($name).decrement(1.0);
}
#[cfg(not(feature = "observability"))]
{
let _ = $name;
}
};
}
macro_rules! observe_span {
($name:expr, $($field_key:ident = $field_val:expr),* $(,)?) => {
#[cfg(feature = "observability")]
let _obs_span = {
let _span = ::tracing::info_span!($name, $($field_key = $field_val),*);
Some(_span.entered())
};
#[cfg(not(feature = "observability"))]
let _obs_span: () = {
$(let _ = $field_val;)*
let _ = $name;
};
};
}
macro_rules! observe_timer_start {
() => {{
#[cfg(feature = "observability")]
{
Some(std::time::Instant::now())
}
#[cfg(not(feature = "observability"))]
{
None::<std::time::Instant>
}
}};
}
macro_rules! observe_timer_record {
($timer:expr, $name:expr, $($label_key:expr => $label_val:expr),* $(,)?) => {
#[cfg(feature = "observability")]
{
if let Some(start) = $timer {
let elapsed = start.elapsed().as_secs_f64();
::metrics::histogram!($name, $($label_key => $label_val),*).record(elapsed);
}
}
#[cfg(not(feature = "observability"))]
{
let _ = ($timer, $name);
$(let _ = ($label_key, $label_val);)*
}
};
}
pub(crate) use observe_counter;
pub(crate) use observe_counter_add;
pub(crate) use observe_gauge_dec;
pub(crate) use observe_gauge_inc;
pub(crate) use observe_histogram;
pub(crate) use observe_span;
pub(crate) use observe_timer_record;
pub(crate) use observe_timer_start;