CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
tqmdedicated.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 "tqmthreadpool.h"
7
8typedef struct TaskQueue TaskQueue;
9typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
10typedef struct TaskQueue TaskQueue;
11typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
12typedef struct TQThreadPoolRunner TQThreadPoolRunner;
13typedef struct TQThreadPoolRunner_WeakRef TQThreadPoolRunner_WeakRef;
14typedef struct TQDedicatedManager TQDedicatedManager;
15typedef struct TQDedicatedManager_WeakRef TQDedicatedManager_WeakRef;
16saDeclarePtr(TQDedicatedManager);
17saDeclarePtr(TQDedicatedManager_WeakRef);
18
19typedef struct TQDedicatedManager_ClassIf {
20 ObjIface* _implements;
21 ObjIface* _parent;
22 size_t _size;
23
24 bool (*start)(_In_ void* self, _In_ TaskQueue* tq);
25 bool (*stop)(_In_ void* self);
26 void (*notify)(_In_ void* self, bool wakeup);
27 // for in-worker managers, this is called BEFORE a task is run by the worker
28 void (*pretask)(_In_ void* self);
29 int64 (*tick)(_In_ void* self);
30 void (*updatePoolSize)(_In_ void* self);
31} TQDedicatedManager_ClassIf;
32extern TQDedicatedManager_ClassIf TQDedicatedManager_ClassIf_tmpl;
33
34typedef struct TQDedicatedManager {
35 union {
36 TQDedicatedManager_ClassIf* _;
37 void* _is_TQDedicatedManager;
38 void* _is_TQThreadPoolManager;
39 void* _is_TQManager;
40 void* _is_ObjInst;
41 };
42 ObjClassInfo* _clsinfo;
43 atomic(uintptr) _ref;
44 atomic(ptr) _weakref;
45
46 TaskQueue* tq;
47 bool needsWorkerTick; // true if this manager needs to be ticked by the worker
48 TQThreadPoolRunner* runner;
49 uint32 lastcount;
50 int64 lastop;
51 int64 idlestart;
52 Thread* mgrthread;
53 Event mgrnotify;
54} TQDedicatedManager;
55extern ObjClassInfo TQDedicatedManager_clsinfo;
56#define TQDedicatedManager(inst) ((TQDedicatedManager*)(unused_noeval((inst) && &((inst)->_is_TQDedicatedManager)), (inst)))
57#define TQDedicatedManagerNone ((TQDedicatedManager*)NULL)
58
59typedef struct TQDedicatedManager_WeakRef {
60 union {
61 ObjInst* _inst;
62 void* _is_TQDedicatedManager_WeakRef;
63 void* _is_TQThreadPoolManager_WeakRef;
64 void* _is_TQManager_WeakRef;
65 void* _is_ObjInst_WeakRef;
66 };
67 atomic(uintptr) _ref;
68 RWLock _lock;
69} TQDedicatedManager_WeakRef;
70#define TQDedicatedManager_WeakRef(inst) ((TQDedicatedManager_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TQDedicatedManager_WeakRef)), (inst)))
71
72_objfactory_guaranteed TQDedicatedManager* TQDedicatedManager_create();
73// TQDedicatedManager* tqdedicatedmanagerCreate();
74#define tqdedicatedmanagerCreate() TQDedicatedManager_create()
75
76// bool tqdedicatedmanagerStart(TQDedicatedManager* self, TaskQueue* tq);
77#define tqdedicatedmanagerStart(self, tq) (self)->_->start(TQDedicatedManager(self), TaskQueue(tq))
78// bool tqdedicatedmanagerStop(TQDedicatedManager* self);
79#define tqdedicatedmanagerStop(self) (self)->_->stop(TQDedicatedManager(self))
80// void tqdedicatedmanagerNotify(TQDedicatedManager* self, bool wakeup);
81#define tqdedicatedmanagerNotify(self, wakeup) (self)->_->notify(TQDedicatedManager(self), wakeup)
82// void tqdedicatedmanagerPretask(TQDedicatedManager* self);
83//
84// for in-worker managers, this is called BEFORE a task is run by the worker
85#define tqdedicatedmanagerPretask(self) (self)->_->pretask(TQDedicatedManager(self))
86// int64 tqdedicatedmanagerTick(TQDedicatedManager* self);
87#define tqdedicatedmanagerTick(self) (self)->_->tick(TQDedicatedManager(self))
88// void tqdedicatedmanagerUpdatePoolSize(TQDedicatedManager* self);
89#define tqdedicatedmanagerUpdatePoolSize(self) (self)->_->updatePoolSize(TQDedicatedManager(self))
90
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
CX Object System - Object-oriented programming in C.
Definition event.h:53