64 lines
1.4 KiB
C++
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";
|
|
}
|
|
|
|
|
|
}; |