24#include "core_metrics_provider.hpp"
26namespace presage::smartspectra::grpc_bindings {
28template<container::settings::IntegrationMode TIntegrationMode>
29CoreMetricsProvider<TIntegrationMode>::CoreMetricsProvider(std::shared_ptr<BackgroundContainer> container) {
30 SwapContainer(container);
33template<container::settings::IntegrationMode TIntegrationMode>
34void CoreMetricsProvider<TIntegrationMode>::SwapContainer(std::shared_ptr<BackgroundContainer> new_container) {
35 this->container.reset();
36 this->container = std::move(new_container);
37 if (this->container ==
nullptr) {
38 this->Finish(grpc::Status(
39 grpc::StatusCode::FAILED_PRECONDITION,
40 "Physiology Preprocessing is not running, unable to get metrics."
43 auto status = this->container->SetOnCoreMetricsOutput(
44 [
this](
const presage::physiology::MetricsBuffer& metrics_output, int64_t ) {
45 this->EnqueueWrite(metrics_output);
46 return absl::OkStatus();
50 this->Finish(rpc::abslStatusToGrpc(status));