| #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_ |