annotate seobeo/seobeo_worker.h @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
parents 745fd127b2a1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
250
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
1 #ifndef SEOBEO_WORKER_H
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
2 #define SEOBEO_WORKER_H
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4 #include "dowa/dowa.h"
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6 typedef void (*Seobeo_Work_Function)(void *p_context);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 typedef void (*Seobeo_Work_Cleanup)(void *p_context);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 typedef enum {
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
10 SEOBEO_WORKER_OK = 0,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 SEOBEO_WORKER_INVALID_ARGUMENT,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12 SEOBEO_WORKER_OUT_OF_MEMORY,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 SEOBEO_WORKER_THREAD_ERROR,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14 SEOBEO_WORKER_QUEUE_FULL,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 SEOBEO_WORKER_STOPPED,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
16 } Seobeo_Worker_Result;
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
17
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
18 typedef struct Seobeo_Thread Seobeo_Thread;
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
19 typedef struct Seobeo_Worker_Pool Seobeo_Worker_Pool;
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21 /*
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
22 * Start one joinable task. Join consumes and destroys the thread handle.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
23 * The optional cleanup function runs after the work function.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
24 */
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
25 Seobeo_Thread *Seobeo_Thread_Start(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 Seobeo_Work_Function function,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27 void *p_context,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28 Seobeo_Work_Cleanup cleanup);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29 Seobeo_Worker_Result Seobeo_Thread_Join(Seobeo_Thread *p_thread);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31 /*
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32 * Start a detached task. On success, Seobeo owns the context until the work
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33 * and optional cleanup functions finish.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
34 */
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35 Seobeo_Worker_Result Seobeo_Thread_Start_Detached(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
36 Seobeo_Work_Function function,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
37 void *p_context,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 Seobeo_Work_Cleanup cleanup);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
40 uint64 Seobeo_Thread_Current_Id(void);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
41
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42 /*
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43 * Create a bounded reusable pool. Submit is non-blocking and transfers context
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44 * ownership only when it returns SEOBEO_WORKER_OK.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45 */
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 Seobeo_Worker_Pool *Seobeo_Worker_Pool_Create(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 uint32 worker_count,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48 uint32 queue_capacity);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
49 Seobeo_Worker_Result Seobeo_Worker_Pool_Submit(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
50 Seobeo_Worker_Pool *p_pool,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
51 Seobeo_Work_Function function,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
52 void *p_context,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
53 Seobeo_Work_Cleanup cleanup);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
54 Seobeo_Worker_Result Seobeo_Worker_Pool_Wait(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
55 Seobeo_Worker_Pool *p_pool);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
56
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
57 /*
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
58 * Stop accepting work. When drain is TRUE, queued tasks finish. When FALSE,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
59 * queued tasks are discarded and their cleanup functions run.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
60 * Wait, Shutdown, and Destroy must not be called from a task or cleanup
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
61 * callback belonging to the same pool. Wait and Shutdown reject those calls;
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
62 * Destroy leaves the pool unchanged.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
63 */
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
64 Seobeo_Worker_Result Seobeo_Worker_Pool_Shutdown(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
65 Seobeo_Worker_Pool *p_pool,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
66 boolean drain);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
67 void Seobeo_Worker_Pool_Destroy(Seobeo_Worker_Pool *p_pool);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
68
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
69 uint32 Seobeo_Worker_Pool_Pending(Seobeo_Worker_Pool *p_pool);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
70 uint32 Seobeo_Worker_Pool_Active(Seobeo_Worker_Pool *p_pool);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
71
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
72 #endif