分享程序员开发的那些事...
首页
NTFS
漏洞
Android
Magento
服务器
Python
powershell
技术问答
Linux
网站首页
且构网 - 分享程序员编程开发的那些事
您所在的位置:
首页
>
mooon-agent发送状态机代码摘要
mooon-agent发送状态机代码摘要
更新时间:2022-09-21 20:41:53
发送状态机比接收状态机相对要简单
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
本文转自eyjian 51CTO博客,原文链接:http://blog.51cto.com/mooon/910295
,如需转载请自行联系原作者
上一篇 : :[PYTHON] 核心编程笔记(16.Python网络编程)
下一篇 : Android 相机的使用
相关阅读
mooon-agent发送状态机代码摘要
mooon-agent发送状态机代码摘要
mooon-agent接收状态机代码摘要
推荐文章
C#怎么遍历一个对象里面的全部属性?
常用 Dos 命令+杂项-常用的命令符+常用的公式
iOS:viewController 和 view 的生命周期、不错的代码设计风格
MySQL高可用方案-PXC环境部署记录
EXTJS学习系列提高篇:第三篇(转载)作者殷良胜,在GridPanel上单击右键显示菜单的制作
Printf(“%d”)
Mobile Market试用后感受
Visual Studio中的单元测试
骨骼动画
关于D3D中的颜色