update:进度更新。

This commit is contained in:
taynpg 2025-03-04 19:46:29 +08:00
parent 2c586e3ccb
commit 8f95f666e2
5 changed files with 42 additions and 5 deletions

View File

@ -123,6 +123,7 @@
"shared_mutex": "cpp",
"thread": "cpp",
"variant": "cpp",
"*.ipp": "cpp"
"*.ipp": "cpp",
"xthread": "cpp"
}
}

View File

@ -6,7 +6,7 @@
例如:
`API`功能示例描述:帮我起一个简短的全大写的名字,如`Absolute battery charging voltage too low`,可以起名`MOI_CLOSE_FAILED`,帮我总结:LoadPort not initialized or initialized incorrectly,注意,直接回复我结果就行,不要添加任何其他内容。
`API`功能示例描述:帮我起一个简短的全大写的名字,如`Absolute battery charging voltage too low`,可以起名`AB_BATTERY_LOW_VOL`,帮我总结:LoadPort not initialized or initialized incorrectly,注意,直接回复我结果就行,不要添加任何其他内容。
然后只需要提交数据,获取返回结果。

View File

@ -12,8 +12,8 @@
enum FrameType : int16_t {
TYPE_REQUEST = 0,
TYPE_RESPONSE,
TYPE_ERROR
TYPE_RESPONSE_SUCCESS,
TYPE_RESPONSE_ERROR
};
struct FrameData {

View File

@ -74,10 +74,43 @@ void Server::th_client(const std::shared_ptr<asio::ip::tcp::socket>& socket, con
}
if (frame->type == FrameType::TYPE_REQUEST) {
ask_mutex_.lock();
//
std::string recv_data(frame->data, frame->len);
std::string out{};
if (!worker_->post(post_data(recv_data), out)) {
std::cout << client_key << " data post error" << std::endl;
FrameData req;
req.type = FrameType::TYPE_RESPONSE_ERROR;
send_frame(socket, req);
} else {
FrameData req;
req.type = FrameType::TYPE_RESPONSE_SUCCESS;
req.data = new char[out.size()];
req.len = out.size();
memcpy(req.data, out.c_str(), out.size());
send_frame(socket, req);
}
ask_mutex_.unlock();
}
delete frame;
}
}
}
std::string Server::post_data(const std::string& data)
{
return std::string();
}
bool Server::send_frame(const std::shared_ptr<asio::ip::tcp::socket>& socket, FrameData& data)
{
asio::error_code error;
char* send_data{};
int len{};
if (!com_pack(&data, &send_data, len)) {
return false;
}
auto send_len = socket->send(asio::buffer(send_data, len));
return send_len == len;
}

View File

@ -30,6 +30,9 @@ private:
void th_client(const std::shared_ptr<asio::ip::tcp::socket>& socket,
const std::string& client_key);
std::string post_data(const std::string& data);
bool send_frame(const std::shared_ptr<asio::ip::tcp::socket>& socket, FrameData& data);
private:
asio::io_context& io_context_;
asio::ip::tcp::acceptor acceptor_;