soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
STaskLoop-i.h
1#ifndef __STASKLOOP_I__H__
2#define __STASKLOOP_I__H__
3#include <interface/obj-ref-i.h>
4#include <interface/SRunnable-i.h>
5
6SNSBEGIN
7
8typedef enum Priority
9{
10 High = 1,
11 Normal = 0,
12 Low = -1,
13} Priority;
14
15#undef INTERFACE
16#define INTERFACE ITaskLoop
17DECLARE_INTERFACE_(ITaskLoop, IObjRef)
18{
19 /**
20 * @brief 添加引用
21 * @return long -- 引用计数
22 */
23 STDMETHOD_(long, AddRef)(THIS) PURE;
24
25 /**
26 * @brief 释放引用
27 * @return long -- 引用计数
28 */
29 STDMETHOD_(long, Release)(THIS) PURE;
30
31 /**
32 * @brief 释放对象
33 * @return void
34 */
35 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
36
37 /**
38 * @brief 获取任务队列的名称
39 * @param pszBuf char* -- 缓冲区
40 * @param nBufLen int -- 缓冲区长度
41 * @return BOOL -- TRUE: 成功,FALSE: 失败
42 */
43 STDMETHOD_(BOOL, getName)(THIS_ char *pszBuf, int nBufLen) PURE;
44
45 /**
46 * @brief 启动一个线程运行任务队列
47 * @param pszName const char* -- 线程名称
48 * @param priority Priority -- 线程优先级
49 * @return void
50 */
51 STDMETHOD_(void, start)(THIS_ const char *pszName, Priority priority) PURE;
52
53 /**
54 * @brief 停止线程同步
55 * @return void
56 */
57 STDMETHOD_(void, stop)(THIS) PURE;
58
59 /**
60 * @brief 向任务管理器发布或发送任务
61 * @param runnable const IRunnable* -- 要运行的任务对象
62 * @param waitUntilDone BOOL -- TRUE: 发送任务,FALSE: 发布任务
63 * @param priority int -- 任务优先级
64 * @return long -- 任务ID,可用于取消任务
65 */
66 STDMETHOD_(long, postTask)
67 (THIS_ const IRunnable *runnable, BOOL waitUntilDone, int priority) PURE;
68
69 /**
70 * @brief 从任务循环待处理任务列表中移除特定对象的任务
71 * @param object void* -- 要移除任务的特定对象
72 * @return void
73 */
74 STDMETHOD_(void, cancelTasksForObject)(THIS_ void *object) PURE;
75
76 /**
77 * @brief 取消特定任务ID列表中的任务
78 * @param taskId long -- 要取消的任务ID
79 * @return BOOL -- TRUE: 成功,FALSE: 失败
80 */
81 STDMETHOD_(BOOL, cancelTask)(THIS_ long taskId) PURE;
82
83 /**
84 * @brief 获取任务循环队列中的总任务数
85 * @return int -- 任务循环队列中的总任务数
86 */
87 STDMETHOD_(int, getTaskCount)(CTHIS) SCONST PURE;
88
89 /**
90 * @brief 获取运行循环的状态
91 * @return BOOL -- TRUE: 运行中,FALSE: 未运行
92 */
93 STDMETHOD_(BOOL, isRunning)(THIS) PURE;
94
95 /**
96 * @brief 获取正在运行的任务信息
97 * @param buf char* -- 接收任务信息的缓冲区
98 * @param bufLen int -- 缓冲区长度
99 * @return BOOL -- TRUE: 成功,FALSE: 无任务运行
100 */
101 STDMETHOD_(BOOL, getRunningTaskInfo)(THIS_ char *buf, int bufLen) PURE;
102
103 /**
104 * @brief 设置一个任务重复运行
105 * @param pTask IRunnable* -- 要运行的任务对象
106 * @param intervel int -- 心跳间隔
107 * @return void
108 * @remark 任务循环将持有pTask的克隆。将pTask设置为null以停止心跳。
109 */
110 STDMETHOD_(void, setHeartBeatTask)(THIS_ IRunnable * pTask, int intervel) PURE;
111};
112
113SNSEND
114#endif // __STASKLOOP_I__H__
Interface for reference counting.
Definition obj-ref-i.h:19