blob: 9a67d67bef0034c86db4cd10dd7ad332dff855e9 [file] [log] [blame]
#ifndef PLATFORMS_SYSHEALTH_COLLECTION_FEED_FORWARD_CLIENT_LIB_FEED_CLIENT_GRPC_H_
#define PLATFORMS_SYSHEALTH_COLLECTION_FEED_FORWARD_CLIENT_LIB_FEED_CLIENT_GRPC_H_
#include <memory>
#include <utility>
#include "tlbmc/feed_client.pb.h"
#include "tlbmc/feed_client_interface.h"
#include "agent_config_service.grpc.pb.h"
#include "data_sink_service.grpc.pb.h"
#include "absl/status/statusor.h"
#include "grpcpp/security/credentials.h"
namespace platforms_syshealth::collection::feed {
// If its bazel build then use
// platforms_syshealth::collection::feed::grpc::DataSinkService::StubInterface
// else use grpc::DataSinkService::StubInterface;
#if defined(BAZEL_BUILD)
using DataSinkService = grpc::DataSinkService;
using AgentConfigService = grpc::AgentConfigService;
#else
using DataSinkService = platforms_syshealth::collection::feed::DataSinkService;
using AgentConfigService =
platforms_syshealth::collection::feed::AgentConfigService;
#endif
class FeedClientGrpc : public FeedClientInterface {
public:
FeedClientGrpc(
const FeedClientConfig& config,
const std::shared_ptr<::grpc::ChannelCredentials>& credentials);
// For testing only.
FeedClientGrpc(
std::unique_ptr<DataSinkService::StubInterface> stub,
std::unique_ptr<AgentConfigService::StubInterface> agent_config_stub)
: stub_(std::move(stub)),
agent_config_stub_(std::move(agent_config_stub)) {}
absl::StatusOr<WriteMetricsResponse> WriteMetrics(
const WriteMetricsRequest& request) override;
absl::StatusOr<GetPoliciesResponse> GetPolicies(
const GetPoliciesRequest& request) override;
private:
FeedClientConfig config_;
std::unique_ptr<DataSinkService::StubInterface> stub_;
std::unique_ptr<AgentConfigService::StubInterface> agent_config_stub_;
};
} // namespace platforms_syshealth::collection::feed
#endif // PLATFORMS_SYSHEALTH_COLLECTION_FEED_FORWARD_CLIENT_LIB_FEED_CLIENT_GRPC_H_