diff options
author | Saúl Ibarra Corretgé <saghul@gmail.com> | 2017-04-25 08:27:52 +0200 |
---|---|---|
committer | Saúl Ibarra Corretgé <saghul@gmail.com> | 2017-04-28 11:16:15 +0200 |
commit | d59d6e6f22b4c11c37e34843d111a748df73bda2 (patch) | |
tree | f2a46fbfb3e308b3f474d086b122f4b591a78bcc /docs/code/idle-compute | |
parent | 2ce5734d76a8bfbf01af4a4854edf1e3cc42e029 (diff) | |
download | libuv-d59d6e6f22b4c11c37e34843d111a748df73bda2.tar.gz libuv-d59d6e6f22b4c11c37e34843d111a748df73bda2.zip |
doc: add code samples from uvbook (unadapted)
PR-URL: https://github.com/libuv/libuv/pull/1246
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Diffstat (limited to 'docs/code/idle-compute')
-rw-r--r-- | docs/code/idle-compute/main.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/code/idle-compute/main.c b/docs/code/idle-compute/main.c new file mode 100644 index 00000000..ff44b694 --- /dev/null +++ b/docs/code/idle-compute/main.c @@ -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); +} |