conveyor-belt-new/ConveyorBeltAbility/include/conveyorBeltAbility.hpp
2025-03-27 22:29:43 +08:00

64 lines
1.4 KiB
C++

#include "ability_sdk/AbilityStub.hpp"
#include "conveyorBeltGrpcServer.h"
#include <thread>
#include <grpcpp/grpcpp.h>
class ConveyorBeltAbility : public ability_sdk::AbilityInterface {
public:
int g_abilityPort = 0;
std::unique_ptr<Server> ability_server;
std::unique_ptr<grpc::ServerCompletionQueue> ability_cq;
// GRPC 服务端
void create_ability_server();
void onStart() override{
LOG(WARNING) << "OnStart";
}
void onConnect() override {
LOG(WARNING) << "OnConnect";
std::thread t_abilityserver(&ConveyorBeltAbility::create_ability_server, this);
t_abilityserver.detach();
// 主线程轮询等待端口号更新
while (g_abilityPort == 0) {
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
LOG(WARNING) << "GRPC Server listening on port: "<< g_abilityPort;
}
void onDisconnect() override {
LOG(WARNING) << "OnDisconnect";
ability_server->Shutdown();
ability_cq->Shutdown();
g_abilityPort = 0;
}
void onTerminate() override {
LOG(WARNING) << "OnTerminate";
onDisconnect();
exit(0);
}
// 获取端口
int abilityPort() const override {
return g_abilityPort;
}
void onSubabilityError(const ability_sdk::SubabilityErrorParam& param) override {
LOG(INFO) << "onSubabilityError called in ConveyorBeltAbility";
}
};