Mercurial
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 |
| 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 |