Train_Identify_arm/nvidia_ascend_engine/common_engine/GrpcEngine/GrpcEngine.cpp

345 lines
8.7 KiB
C++
Raw Normal View History

2024-06-19 06:35:05 +00:00
/*
* @Author:
* @Date: 2022-01-27 10:27:26
* @LastEditors: your name
* @LastEditTime: 2022-02-22 15:01:51
* @Description: gRPC接口
* @FilePath: \lirs\code\GrpcEngine\GrpcEngine.cpp
*
* Copyright © 2022 <Shandong Matrix Software Engineering Co., Ltd>
*/
#include "GrpcEngine.h"
using namespace ai_matrix;
GrpcEngine::GrpcEngine() {}
GrpcEngine::~GrpcEngine() {}
APP_ERROR GrpcEngine::Init()
{
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
LogInfo << "GrpcEngine Init ok";
return APP_ERR_OK;
}
APP_ERROR GrpcEngine::DeInit()
{
LogInfo << "GrpcEngine DeInit ok";
return APP_ERR_OK;
}
APP_ERROR GrpcEngine::Process()
{
int ret = APP_ERR_OK;
while (!isStop_)
{
usleep(1000);
}
return APP_ERR_OK;
}
/**
*
* */
/**
* -
* @description:
* @param {ServerContext} *context
* @param {Request} *request
* @param {Reply} *reply
* @return {*}
*/
Status GrpcEngine::Come(ServerContext *context, const Request *request, Reply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
std::shared_ptr<std::string> pstrCommand = std::make_shared<std::string>("start");
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pstrCommand));
return Status::OK;
}
/**
* -
* @description:
* @param {ServerContext} *context
* @param {Request} *request
* @param {Reply} *reply
* @return {*}
*/
Status GrpcEngine::Leave(ServerContext *context, const Request *request, Reply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
std::shared_ptr<std::string> pstrCommand = std::make_shared<std::string>("end");
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pstrCommand));
return Status::OK;
}
/**
* -
* @description:
* @param {ServerContext} *context
* @param {Request} *request
* @param {Reply} *reply
* @return {*}
*/
Status GrpcEngine::TemporaryStop(ServerContext *context, const Request *request, Reply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
return Status::OK;
}
/**
* -
* @description:
* @param {ServerContext} *context
* @param {Request} *request
* @param {Reply} *reply
* @return {*}
*/
Status GrpcEngine::Reversing(ServerContext *context, const Request *request, Reply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
std::shared_ptr<std::string> pstrCommand = std::make_shared<std::string>("back");
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pstrCommand));
return Status::OK;
}
/**
*
* @description:
* @param {ServerContext} *context
* @param {QueryWorkstationRequest} *request
* @param {QueryWorkstationReply} *reply
* @return {*}
*/
Status GrpcEngine::QueryWorkstation(ServerContext *context, const QueryWorkstationRequest *request, QueryWorkstationReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现看后续是否要改
try
{
reply->set_name_no(MyYaml::GetIns()->GetStringValue("atlas_poundno"));
}
catch(const std::exception& e)
{
reply->set_error_msg("查询失败!配置参数读取异常!");
}
return Status::OK;
}
/**
*
* @description:
* @param {ServerContext} *context
* @param {UpdateWorkstationRequest} *request
* @param {UpdateWorkstationReply} *reply
* @return {*}
*/
Status GrpcEngine::UpdateWorkstation(ServerContext *context, const UpdateWorkstationRequest *request, UpdateWorkstationReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
return Status::OK;
}
/**
*
* @description:
* @param {ServerContext} *context
* @param {QueryCameraRequest} *request
* @param {QueryCameraReply} *reply
* @return {*}
*/
Status GrpcEngine::QueryCamera(ServerContext *context, const QueryCameraRequest *request, QueryCameraReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现看后续是否要改
ai_matrix::DataSourceConfig dataSourceConfig_;
dataSourceConfig_ = MyYaml::GetIns()->GetDataSourceConfigById(request->channel_id()); //获取摄像机参数
reply->set_channel_id(request->channel_id());
reply->set_use(dataSourceConfig_.bUse);
reply->set_url(dataSourceConfig_.strUrl);
reply->set_skipinterval(dataSourceConfig_.iSkipInterval);
reply->set_direction(dataSourceConfig_.iDirection);
reply->set_left_first(dataSourceConfig_.iLeftFirst);
reply->set_right_first(dataSourceConfig_.iRightFirst);
return Status::OK;
}
/**
*
* @description:
* @param {ServerContext} *context
* @param {UpdateCameraRequest} *request
* @param {UpdateCameraReply} *reply
* @return {*}
*/
Status GrpcEngine::UpdateCamera(ServerContext *context, const UpdateCameraRequest *request, UpdateCameraReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
return Status::OK;
}
/**
* FTP的配置
* @description:
* @param {ServerContext} *context
* @param {QueryFTPRequest} *request
* @param {QueryFTPReply} *reply
* @return {*}
*/
Status GrpcEngine::QueryFTP(ServerContext *context, const QueryFTPRequest *request, QueryFTPReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现看后续是否需要改动
try
{
reply->set_open(MyYaml::GetIns()->GetIntValue("gc_ftp_open"));
reply->set_username(MyYaml::GetIns()->GetStringValue("gc_ftp_username"));
reply->set_password(MyYaml::GetIns()->GetStringValue("gc_ftp_password"));
reply->set_ip(MyYaml::GetIns()->GetStringValue("gc_ftp_ip"));
reply->set_port(MyYaml::GetIns()->GetIntValue("gc_ftp_port"));
reply->set_image_path(MyYaml::GetIns()->GetStringValue("gc_ftp_image_path"));
reply->set_quit_time(MyYaml::GetIns()->GetIntValue("gc_ftp_quit_time"));
}
catch (const std::exception& e)
{
reply->set_error_msg("查询失败!配置参数读取异常!");
}
return Status::OK;
}
/**
* FTP的配置
* @description:
* @param {ServerContext} *context
* @param {UpdateFTPRequest} *request
* @param {UpdateFTPReply} *reply
* @return {*}
*/
Status GrpcEngine::UpdateFTP(ServerContext *context, const UpdateFTPRequest *request, UpdateFTPReply *reply)
{
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
//TODO(zhangwei):具体实现
return Status::OK;
}
/**
*
* @description:
* @param {ServerContext} *context
* @param {Request} *request
* @param {Reply} *reply
* @return {*}
*/
Status GrpcEngine::RebootAI(ServerContext *context, const Request *request, Reply *reply)
{
LogInfo << "Restart >>> head:" << request->head();
//验证请求头
if (request->head() != this->HEAD)
{
reply->set_error_msg(" head: \"" + std::to_string(request->head()) + "\" permission denied !");
return Status::OK;
}
pthread_t id;
int ret = pthread_create(&id, NULL, system_restart, NULL);
if (ret != 0)
{
reply->set_error_msg("小站重启失败!");
}
return Status::OK;
}
// 线程的运行函数
void* GrpcEngine::system_restart(void* args)
{
sleep(2);
system("reboot");
return 0;
}