blob: 1956dd0933182d346e24f45e67ce622e0235a9fb [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
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>&
system_state_updater,
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:
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>
system_state_updater_;
std::unique_ptr<ActionContextManager> action_context_manager_;
};
} // namespace safepower_agent
#endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_SAFEPOWER_AGENT_H_