init
This commit is contained in:
commit
70d467d052
97 files changed
+10386
No files matched your search
@@ -0,0 +1,58 @@
|
||||
#pragma onces
|
||||
#include "tt/Mq.h"
|
||||
namespace qing {
|
||||
|
||||
|
||||
/*
|
||||
* TRANSMIT TASK 通信任务
|
||||
* (创建一个通信伺服器,它收到消息就执行回调)
|
||||
* (长时间伺服运行会不会有问题)
|
||||
*/
|
||||
class Tttask: public ITask {
|
||||
public:
|
||||
|
||||
/* 构造【通信任务】
|
||||
* msglen: 单条消息的长度
|
||||
* msgcnt: 消息伺服长度
|
||||
* callback: 回调函数 */
|
||||
Tttask(const size_t msglen, size_t msgcnt, const sf_t callback);
|
||||
|
||||
/* 启动该通信伺服任务 */
|
||||
void start() override;
|
||||
|
||||
/* 终止这个通信伺服任务
|
||||
*
|
||||
* TODO: 研究一下要不要释放一些资源
|
||||
* TODO: 增加超时 */
|
||||
void stop() override {
|
||||
if (this->isRunning())
|
||||
th->WaitClose();
|
||||
}
|
||||
|
||||
|
||||
/* 该任务是否在运行
|
||||
*
|
||||
* FIXME: 对START状态的处理还应该考虑
|
||||
* FIXME: 如果在STOP状态而没有stop()任务,可能会造成线程未关闭,一直占用资源? */
|
||||
bool isRunning() override;
|
||||
|
||||
|
||||
private:
|
||||
std::unique_ptr<Thread> th; /* 可控线程指针 */
|
||||
std::unique_ptr<sf_t> callback; /* 回调行为(接收之后)指针 */
|
||||
std::unique_ptr<Mq> mq; /* 消息队列指针 */
|
||||
size_t msglen=0, msgcnt=0; /* 消息的缓存规格 */
|
||||
std::string name; /* 消息队列名(进程号) */
|
||||
|
||||
|
||||
|
||||
|
||||
/* 初始化通信伺服线程,
|
||||
* 初始化方法就是通过传入一些函数,
|
||||
* 构建线程 */
|
||||
void init_thread();
|
||||
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user