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 "tqmanager.h"
7#include <cx/thread/mutex.h>
8
9typedef struct TaskQueue TaskQueue;
10typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
11typedef struct TQManualManager TQManualManager;
12typedef struct TQManualManager_WeakRef TQManualManager_WeakRef;
13saDeclarePtr(TQManualManager);
14saDeclarePtr(TQManualManager_WeakRef);
15
16typedef struct TQManualManager_ClassIf {
17 ObjIface* _implements;
18 ObjIface* _parent;
19 size_t _size;
20
21 bool (*start)(_In_ void* self, _In_ TaskQueue* tq);
22 bool (*stop)(_In_ void* self);
23 void (*notify)(_In_ void* self, bool wakeup);
24 // for in-worker managers, this is called BEFORE a task is run by the worker
25 void (*pretask)(_In_ void* self);
26 int64 (*tick)(_In_ void* self);
27} TQManualManager_ClassIf;
28extern TQManualManager_ClassIf TQManualManager_ClassIf_tmpl;
29
30typedef struct TQManualManager {
31 union {
32 TQManualManager_ClassIf* _;
33 void* _is_TQManualManager;
34 void* _is_TQManager;
35 void* _is_ObjInst;
36 };
37 ObjClassInfo* _clsinfo;
38 atomic(uintptr) _ref;
39 atomic(ptr) _weakref;
40
41 TaskQueue* tq;
42 bool needsWorkerTick; // true if this manager needs to be ticked by the worker
43 Mutex mgrlock; // one worker can run the manager at a time
44 atomic(bool) needrun; // manager needs to be run ASAP
45} TQManualManager;
46extern ObjClassInfo TQManualManager_clsinfo;
47#define TQManualManager(inst) ((TQManualManager*)(unused_noeval((inst) && &((inst)->_is_TQManualManager)), (inst)))
48#define TQManualManagerNone ((TQManualManager*)NULL)
49
50typedef struct TQManualManager_WeakRef {
51 union {
52 ObjInst* _inst;
53 void* _is_TQManualManager_WeakRef;
54 void* _is_TQManager_WeakRef;
55 void* _is_ObjInst_WeakRef;
56 };
57 atomic(uintptr) _ref;
58 RWLock _lock;
59} TQManualManager_WeakRef;
60#define TQManualManager_WeakRef(inst) ((TQManualManager_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TQManualManager_WeakRef)), (inst)))
61
62_objfactory_guaranteed TQManualManager* TQManualManager_create();
63// TQManualManager* tqmanualmanagerCreate();
64#define tqmanualmanagerCreate() TQManualManager_create()
65
66// bool tqmanualmanagerStart(TQManualManager* self, TaskQueue* tq);
67#define tqmanualmanagerStart(self, tq) (self)->_->start(TQManualManager(self), TaskQueue(tq))
68// bool tqmanualmanagerStop(TQManualManager* self);
69#define tqmanualmanagerStop(self) (self)->_->stop(TQManualManager(self))
70// void tqmanualmanagerNotify(TQManualManager* self, bool wakeup);
71#define tqmanualmanagerNotify(self, wakeup) (self)->_->notify(TQManualManager(self), wakeup)
72// void tqmanualmanagerPretask(TQManualManager* self);
73//
74// for in-worker managers, this is called BEFORE a task is run by the worker
75#define tqmanualmanagerPretask(self) (self)->_->pretask(TQManualManager(self))
76// int64 tqmanualmanagerTick(TQManualManager* self);
77#define tqmanualmanagerTick(self) (self)->_->tick(TQManualManager(self))
78
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
Mutex synchronization primitive.
CX Object System - Object-oriented programming in C.
Definition mutex.h:60