diff third_party/libuv/docs/code/idle-compute/main.c @ 160:948de3f54cea

[ThirdParty] Added libuv
author June Park <parkjune1995@gmail.com>
date Wed, 14 Jan 2026 19:39:52 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/third_party/libuv/docs/code/idle-compute/main.c	Wed Jan 14 19:39:52 2026 -0800
@@ -0,0 +1,43 @@
+#include <stdio.h>
+
+#include <uv.h>
+
+uv_loop_t *loop;
+uv_fs_t stdin_watcher;
+uv_idle_t idler;
+char buffer[1024];
+
+void crunch_away(uv_idle_t* handle) {
+    // Compute extra-terrestrial life
+    // fold proteins
+    // computer another digit of PI
+    // or similar
+    fprintf(stderr, "Computing PI...\n");
+    // just to avoid overwhelming your terminal emulator
+    uv_idle_stop(handle);
+}
+
+void on_type(uv_fs_t *req) {
+    if (stdin_watcher.result > 0) {
+        buffer[stdin_watcher.result] = '\0';
+        printf("Typed %s\n", buffer);
+
+        uv_buf_t buf = uv_buf_init(buffer, 1024);
+        uv_fs_read(loop, &stdin_watcher, 0, &buf, 1, -1, on_type);
+        uv_idle_start(&idler, crunch_away);
+    }
+    else if (stdin_watcher.result < 0) {
+        fprintf(stderr, "error opening file: %s\n", uv_strerror(req->result));
+    }
+}
+
+int main() {
+    loop = uv_default_loop();
+
+    uv_idle_init(loop, &idler);
+
+    uv_buf_t buf = uv_buf_init(buffer, 1024);
+    uv_fs_read(loop, &stdin_watcher, 0, &buf, 1, -1, on_type);
+    uv_idle_start(&idler, crunch_away);
+    return uv_run(loop, UV_RUN_DEFAULT);
+}