blob: f663ae70880b590f5a86daa4e86057688bded6a1 [file] [log] [blame]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_STORE_STORE_HFT_ADAPTER_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_STORE_STORE_HFT_ADAPTER_H_
#include <memory>
#include <vector>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/time/time.h"
#include "tlbmc/adapter/data_source.h"
#include "identifier.pb.h"
#include "payload.pb.h"
#include "sensor_identifier.pb.h"
#include "subscription_params.pb.h"
#include "sensor.pb.h"
#include "tlbmc/store/store.h"
namespace milotic_tlbmc {
// Simple helper function to convert a SensorUnit to a HFT SensorUnits.
milotic_hft::SensorUnits ConvertToHftUnit(SensorUnit unit);
// An adapter to the Store interface for the High Frequency Telemetry (HFT)
// framework.
class StoreHftAdapter : public milotic_hft::DataSource {
public:
static absl::StatusOr<std::unique_ptr<StoreHftAdapter>> Create(Store* store);
absl::Status ConfigureSamplingInterval(
const milotic_hft::Identifier& identifier,
int sampling_interval_ms) override;
absl::Status ConfigureBatchSize(const milotic_hft::Identifier& identifier,
int max_batch_size) override;
absl::Status ResetBatchSizeToDefault(
const milotic_hft::Identifier& identifier) override;
absl::Status ResetSamplingIntervalToDefault(
const milotic_hft::Identifier& identifier) override;
absl::StatusOr<milotic_hft::Payload> Collect(
const milotic_hft::Identifier& identifier,
absl::Time start_time) const override;
absl::StatusOr<std::vector<milotic_hft::Identifier>>
GetIdentifiersForResourceType(
const milotic_hft::SubscriptionPolicy::ResourceType& resource_type)
const override;
private:
explicit StoreHftAdapter(Store* store) : store_(store) {}
Store* store_;
};
} // namespace milotic_tlbmc
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_STORE_STORE_HFT_ADAPTER_H_