#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_SHARED_MEM_CLIENT_SEGMENT_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_SHARED_MEM_CLIENT_SEGMENT_H_

#include <string>

// copybara:strip_begin(g3-shared-libs)
#include "tlbmc/hal/shared_mem/metrics.h"
// copybara:strip_end
#include "tlbmc/hal/shared_mem/sensors.h"

namespace milotic_tlbmc {
/*
 * This class represents the client-side accessor to the shared memory segment.
 * Both existing implementations are thread safe. In case of
 * StaticSharedMemorySegment the thread safety is guaranteed by the immutability
 * of the segment meta-data after initialization In case of the
 * CompatClientSegment, thread safety is guaranteed by an IPC mutex.
 *
 *
 */
class ClientSegment {
 public:
  virtual ~ClientSegment() = default;
  /* Returns a pointer to the IpcSensor named `sensor_name` or null if not found
   */
  [[nodiscard]] virtual IpcSensor* FindSensor(
      const std::string& sensor_name) const = 0;
  /* Returns a pointer to the TlbmcMetrics object in process memory.
   * Should never be null under normal circumstances */
  /* Note: Metrics is no longer in shared memory. We still keep the API in this
   * shared memory layer to keep the change less disruptive.*/
  // copybara:strip_begin(g3-shared-libs)
  [[nodiscard]] virtual TlbmcMetrics* GetMetrics() = 0;
  // copybara:strip_end
};

}  // namespace milotic_tlbmc

#endif  // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_SHARED_MEM_CLIENT_SEGMENT_H_
