blob: ee509447921780731a06bd74f8e583583f739b71 [file] [log] [blame]
#ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_SAFEPOWER_AGENT_H_
#define PRODUCTION_SUSHID_SAFEPOWER_AGENT_SAFEPOWER_AGENT_H_
#include <memory>
#include <utility>
#include "action_context.h"
#include "safepower_agent.grpc.pb.h"
#include "safepower_agent.pb.h"
#include "state_updater.h"
#include "absl/base/nullability.h"
#include "grpcpp/server_context.h"
#include "grpcpp/support/server_callback.h"
namespace safepower_agent {
class SafepowerLocalAgentImpl
: public safepower_agent_proto::SafepowerLocalAgent::CallbackService {
public:
explicit SafepowerLocalAgentImpl(
const absl::Nonnull<
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>>&
system_state_updater,
absl::Nonnull<std::unique_ptr<ActionContextManager>>
action_context_manager)
: system_state_updater_(system_state_updater),
action_context_manager_(std::move(action_context_manager)) {}
grpc::ServerUnaryReactor* StartAction(
grpc::CallbackServerContext* context,
const safepower_agent_proto::StartActionRequest* request,
safepower_agent_proto::StartActionResponse* response) override;
grpc::ServerWriteReactor<safepower_agent_proto::ActionStateLog>*
MonitorAction(
grpc::CallbackServerContext* context,
const safepower_agent_proto::MonitorActionRequest* request) override;
grpc::ServerWriteReactor<safepower_agent_proto::SystemState>* MonitorState(
grpc::CallbackServerContext* context,
const safepower_agent_proto::MonitorStateRequest* request) override;
grpc::ServerUnaryReactor* GetSupportedActions(
grpc::CallbackServerContext* context,
const safepower_agent_proto::GetSupportedActionsRequest* request,
safepower_agent_proto::GetSupportedActionsResponse* response) override;
private:
absl::Nonnull<
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>>
system_state_updater_;
absl::Nonnull<std::unique_ptr<ActionContextManager>> action_context_manager_;
};
} // namespace safepower_agent
#endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_SAFEPOWER_AGENT_H_