mooon-agent发送状态机代码摘要
发送状态机比接收状态机相对要简单
- send_machine.h
点击(此处)折叠或打开
- #ifndef MOOON_AGENT_SEND_MACHINE_H
- #define MOOON_AGENT_SEND_MACHINE_H
- #include <agent/config.h>
- AGENT_NAMESPACE_BEGIN
- class CAgentConnector;
- class CSendMachine
- {
- public:
- CSendMachine(CAgentConnector* connector);
- bool is_finish() const;
- util::handle_result_t continue_send();
- util::handle_result_t send(const char* msg, size_t msg_size);
- void reset();
-
- private:
- CAgentConnector* _connector;
-
- private:
- const char* _cursor;
- size_t _remain_size;
- };
- AGENT_NAMESPACE_END
- #endif // MOOON_AGENT_SEND_MACHINE_H
- send_machine.cpp
点击(此处)折叠或打开
- #include "send_machine.h"
- #include "agent_connector.h"
- AGENT_NAMESPACE_BEGIN
- CSendMachine::CSendMachine(CAgentConnector* connector)
- :_connector(connector)
- {
- reset();
- }
- // 当前消息是否已经发送完
- bool CSendMachine::is_finish() const
- {
- return 0 == _remain_size;
- }
- // 发送消息,可能是一个消息的第一次发送,也可能是一个消息的非第一次发送
- util::handle_result_t CSendMachine::continue_send()
- {
- ssize_t bytes_sent = _connector->send(_cursor, _remain_size);
- if (bytes_sent > -1)
- {
- _cursor += bytes_sent;
- _remain_size -= bytes_sent;
- }
-
- return is_finish()
- ? util::handle_finish
- : util::handle_continue;
- }
- // 发送消息,总是一个消息的第一次发送
- // 参数说明:
- // msg - 需要发送的消息
- // msg_size - 需要发送的消息字节数
- util::handle_result_t CSendMachine::send(const char* msg, size_t msg_size)
- {
- _cursor = msg;
- _remain_size = msg_size;
-
- return continue_send();
- }
- void CSendMachine::reset()
- {
- _cursor = NULL;
- _remain_size = 0;
- }
- AGENT_NAMESPACE_END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义