Expose Rust extension for use in marshaling metrics and read/write values
To allow the MmapedFile
to optionally consume fast_mmaped_file_rs
instead of fast_mmaped_file
, we perform an initial class
declaration to establish inheritance. This allows us to reuse the class method definitions.
Ideally we'd add a configuration parameter to set this option. However, when I attempted to implement this, it created a circular dependency
between MmapedValue
and MmapedFile
, causing the following failure:
NameError:
uninitialized constant Prometheus::Client::MmapedValue
To work around this, we instead check if the prometheus_rust_mmaped_file
environment exists and is set to true
and that the
Rust extension is loaded.
Also allow library users to configure the exporter to use fast_mmaped_file_rs
either via the
prometheus_rust_multiprocess_metrics
environment variable or setting the rust_multiprocess_metrics
configuration value.
We provide the environment variable option to stay consistent with the prometheus_rust_mmaped_file
variable used to enable the Rust extension for read/write operations on mmapped files.