annotate seobeo/README.md @ 254:2b6e732087ff

[ui] Add complete native component catalog Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Tue, 04 Aug 2026 15:12:09 -0700
parents 745fd127b2a1
children 609d3c6aff4e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
192
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
1 # seobeo
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
2
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3 HTTP client and networking library for C.
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5 ## Features
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 - HTTP/HTTPS client
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8 - SSL/TLS support
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 - Async networking with libuv
250
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
10 - Joinable/detached tasks and bounded worker pools
192
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 - Snapshot testing utilities
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 ## Files
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 | File | Description |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
16 |------|-------------|
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
17 | `seobeo.h` | Public API header |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
18 | `seobeo_internal.h` | Internal declarations |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
19 | `s_http_client.c` | HTTP client implementation |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20 | `s_network.c` | Network utilities |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21 | `s_ssl.c` | SSL/TLS handling |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
22 | `s_logging.c` | Logging utilities |
250
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
23 | `s_worker.c` | Thread and worker-pool implementation |
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
24 | `seobeo_worker.h` | Public worker API |
192
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
25 | `snapshot_creator.c/h` | Snapshot testing |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 | `docs/` | Documentation |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27 | `examples/` | Usage examples |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28 | `tests/` | Unit tests |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29 | `os/` | OS-specific code |
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31 ## Usage
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33 ```c
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
34 #include "seobeo/seobeo.h"
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
36 // Make HTTP request
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
37 HttpResponse* resp = http_get("https://example.com");
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 // handle response...
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39 http_response_free(resp);
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
40 ```
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
41
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42 ## Building
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44 ```bash
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45 bazel build //seobeo:seobeo
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 bazel test //seobeo:seobeo_test
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 ```
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48
250
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
49 ## Background workers
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
50
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
51 Use a detached task for simple fire-and-forget work:
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
52
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
53 ```c
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
54 void Convert_Image(void *p_context)
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
55 {
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
56 Conversion *p_conversion = p_context;
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
57 Run_FFmpeg(p_conversion);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
58 }
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
59
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
60 Seobeo_Worker_Result result =
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
61 Seobeo_Thread_Start_Detached(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
62 Convert_Image,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
63 p_conversion,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
64 free);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
65 if (result != SEOBEO_WORKER_OK)
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
66 free(p_conversion);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
67 ```
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
68
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
69 Use a bounded pool when requests can enqueue expensive work:
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
70
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
71 ```c
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
72 Seobeo_Worker_Pool *p_pool =
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
73 Seobeo_Worker_Pool_Create(2, 16);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
74
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
75 Seobeo_Worker_Result result =
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
76 Seobeo_Worker_Pool_Submit(
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
77 p_pool,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
78 Convert_Image,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
79 p_conversion,
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
80 free);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
81
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
82 Seobeo_Worker_Pool_Shutdown(p_pool, TRUE);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
83 Seobeo_Worker_Pool_Destroy(p_pool);
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
84 ```
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
85
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
86 Submitting transfers context ownership only when it returns
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
87 `SEOBEO_WORKER_OK`. Cleanup runs after successful work and for queued tasks
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
88 discarded by a non-draining shutdown. User callbacks never run while the pool
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
89 mutex is held.
745fd127b2a1 [seobeo] Add bounded worker interface
MrJuneJune <me@mrjunejune.com>
parents: 192
diff changeset
90
192
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
91 ## Dependencies
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
92
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
93 - libuv (via //third_party/libuv)
b818a4561a3c Added AI genreated README.md. Needed to be read.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
94 - OpenSSL