41 lines
2.7 KiB
C++
41 lines
2.7 KiB
C++
//
|
|
// Created by xtkuang on 2025/6/1.
|
|
//
|
|
|
|
#ifndef GRPC_CAMERA_SERVICE_H
|
|
#define GRPC_CAMERA_SERVICE_H
|
|
|
|
#include "cmvr/api/camera_service.grpc.pb.h"
|
|
#include "../utils/base/grpc_utils.h"
|
|
#include "device_manager/device_manager.h"
|
|
|
|
namespace cmvr::service {
|
|
|
|
class gRPCCameraServiceImpl final: public api::CameraService::Service {
|
|
public:
|
|
gRPCCameraServiceImpl();
|
|
~gRPCCameraServiceImpl() override = default;
|
|
grpc::Status GetStatus(grpc::ServerContext* context, const api::GetCameraStateCommand_Request* request, api::GetCameraStateCommand_Feedback* response) override;
|
|
grpc::Status StartCamera(grpc::ServerContext* context, const api::StartCameraCommand_Request* request, api::StartCameraCommand_Feedback* response) override;
|
|
grpc::Status StopCamera(grpc::ServerContext* context, const api::StopCameraCommand_Request* request, api::StopCameraCommand_Feedback* response) override;
|
|
grpc::Status GetRGBImage(grpc::ServerContext* context, const api::GetRGBImageCommand_Request* request, api::GetRGBImageCommand_Feedback* response) override;
|
|
grpc::Status GetDepthImage(grpc::ServerContext* context, const api::GetDepthImageCommand_Request* request, api::GetDepthImageCommand_Feedback* response) override;
|
|
grpc::Status GetRGBDImages(grpc::ServerContext* context, const api::GetRGBDImagesCommand_Request* request, api::GetRGBDImagesCommand_Feedback* response) override;
|
|
grpc::Status StartRecording(grpc::ServerContext* context, const api::StartCameraRecordingCommand_Request* request, api::StartCameraRecordingCommand_Feedback* response) override;
|
|
grpc::Status StopRecording(grpc::ServerContext* context, const api::StopCameraRecordingCommand_Request* request, api::StopCameraRecordingCommand_Feedback* response) override;
|
|
grpc::Status GetDepthImageStream(grpc::ServerContext* context, grpc::ServerReaderWriter<cmvr::api::GetDepthImageStreamCommand_Feedback, cmvr::api::GetDepthImageStreamCommand_Request>* stream) override;
|
|
grpc::Status GetRGBDImagesStream(grpc::ServerContext* context, grpc::ServerReaderWriter<cmvr::api::GetRGBDImagesStreamCommand_Feedback, cmvr::api::GetRGBDImagesStreamCommand_Request>* stream) override;
|
|
grpc::Status GetRGBImageStream(grpc::ServerContext* context, grpc::ServerReaderWriter<cmvr::api::GetRGBImageStreamCommand_Feedback, cmvr::api::GetRGBImageStreamCommand_Request>* stream) override;
|
|
private:
|
|
device::DeviceManager& dmgr_;
|
|
|
|
//双向流读写线程
|
|
std::shared_ptr<std::thread> read_thread_ = nullptr;
|
|
std::shared_ptr<std::thread> write_thread_ = nullptr;
|
|
std::atomic<bool> running_{false};
|
|
};
|
|
}
|
|
|
|
|
|
|
|
#endif //GRPC_CAMERA_SERVICE_H
|