CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
tqmmanual.h
1#pragma once
2// This header file is auto-generated!
3// Do not make changes to this file or they will be overwritten.
4// clang-format off
5#include <cx/obj.h>
6#include <cx/struct.h>
7#include "tqmanager.h"
8#include <cx/thread/mutex.h>
9
10CX_C_BEGIN
11
12typedef struct TaskQueue TaskQueue;
13typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
14typedef struct TQManualManager TQManualManager;
15typedef struct TQManualManager_WeakRef TQManualManager_WeakRef;
16saDeclarePtr(TQManualManager);
17saDeclarePtr(TQManualManager_WeakRef);
18#define _sti_TQManualManager _sti_object
19#define SType_TQManualManager TQManualManager*
20#define STStorageType_TQManualManager TQManualManager*
21#define STypeArg_TQManualManager(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TQManualManager, val))
22#define STypeArgPtr_TQManualManager(type, val) (stgeneric*)objInstCheckClassPtr(TQManualManager, val)
23#define STypeCheckedArg_TQManualManager(type, val) stType(type), stArg(type, val)
24#define STypeCheckedPtrArg_TQManualManager(type, val) stType(type), stArgPtr(type, val)
25
26typedef struct TQManualManager_ClassIf {
27 ObjIface* _implements;
28 ObjIface* _parent;
29 size_t _size;
30
31 bool (*start)(_In_ void* self, _In_ TaskQueue* tq);
32 bool (*stop)(_In_ void* self);
33 void (*notify)(_In_ void* self, bool wakeup);
34 // for in-worker managers, this is called BEFORE a task is run by the worker
35 void (*pretask)(_In_ void* self);
36 int64 (*tick)(_In_ void* self);
37} TQManualManager_ClassIf;
38extern TQManualManager_ClassIf TQManualManager_ClassIf_tmpl;
39
40typedef struct TQManualManager {
41 union {
42 TQManualManager_ClassIf* _;
43 void* _is_TQManualManager;
44 void* _is_TQManager;
45 void* _is_ObjInst;
46 };
47 ObjClassInfo* _clsinfo;
48 atomic(uintptr) _ref;
49 atomic(ptr) _weakref;
50
51 TaskQueue* tq;
52 bool needsWorkerTick; // true if this manager needs to be ticked by the worker
53 Mutex mgrlock; // one worker can run the manager at a time
54 atomic(bool) needrun; // manager needs to be run ASAP
55} TQManualManager;
56extern ObjClassInfo TQManualManager_clsinfo;
57#define TQManualManager(inst) objInstCheckClass(TQManualManager, inst)
58#define TQManualManagerNone ((TQManualManager*)NULL)
59
60typedef struct TQManualManager_WeakRef {
61 union {
62 ObjInst* _inst;
63 void* _is_TQManualManager_WeakRef;
64 void* _is_TQManager_WeakRef;
65 void* _is_ObjInst_WeakRef;
66 };
67 atomic(uintptr) _ref;
68 RWLock _lock;
69} TQManualManager_WeakRef;
70#define TQManualManager_WeakRef(inst) objWeakRefCheckClass(TQManualManager, inst)
71
72_objfactory_guaranteed TQManualManager* TQManualManager_create();
73// TQManualManager* tqmanualmanagerCreate();
74#define tqmanualmanagerCreate() TQManualManager_create()
75
76// bool tqmanualmanagerStart(TQManualManager* self, TaskQueue* tq);
77#define tqmanualmanagerStart(self, tq) (self)->_->start(TQManualManager(self), TaskQueue(tq))
78// bool tqmanualmanagerStop(TQManualManager* self);
79#define tqmanualmanagerStop(self) (self)->_->stop(TQManualManager(self))
80// void tqmanualmanagerNotify(TQManualManager* self, bool wakeup);
81#define tqmanualmanagerNotify(self, wakeup) (self)->_->notify(TQManualManager(self), wakeup)
82// void tqmanualmanagerPretask(TQManualManager* self);
83//
84// for in-worker managers, this is called BEFORE a task is run by the worker
85#define tqmanualmanagerPretask(self) (self)->_->pretask(TQManualManager(self))
86// int64 tqmanualmanagerTick(TQManualManager* self);
87#define tqmanualmanagerTick(self) (self)->_->tick(TQManualManager(self))
88
89CX_C_END
#define saDeclarePtr(name)
Definition sarray.h:100
#define _objfactory_guaranteed
Definition objimpl.h:106
CX Struct System - Introspectable, serializable POD structures in C.
Mutex synchronization primitive.
CX Object System - Object-oriented programming in C.
Definition mutex.h:60