diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-30 02:49:40 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-30 02:49:40 +0000 |
commit | c96f16e8103783f6b98d9f844ea3a7f2195e4834 (patch) | |
tree | 479bef5e7eb5d4f04ba171931c8b47335734e161 /debian/vendor-h2o/deps/libyrmcds/USAGE.md | |
parent | Merging upstream version 1.9.4. (diff) | |
download | dnsdist-debian/1.9.4-1.tar.xz dnsdist-debian/1.9.4-1.zip |
Adding debian version 1.9.4-1.debian/1.9.4-1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/vendor-h2o/deps/libyrmcds/USAGE.md')
-rw-r--r-- | debian/vendor-h2o/deps/libyrmcds/USAGE.md | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/debian/vendor-h2o/deps/libyrmcds/USAGE.md b/debian/vendor-h2o/deps/libyrmcds/USAGE.md deleted file mode 100644 index 4087119..0000000 --- a/debian/vendor-h2o/deps/libyrmcds/USAGE.md +++ /dev/null @@ -1,221 +0,0 @@ -Usage -===== - -`yc` ----- - -`yc` is a memcached/yrmcds client program. It provides access to all -libyrmcds library functions therefore access to all server functions. - -`yc` prints out its usage when invoked without command-line arguments. - -Minimal example ---------------- - -```c -#include <yrmcds.h> - -#include <errno.h> -#include <error.h> -#include <stdlib.h> -#include <stdio.h> - -void check_error(yrmcds_error e) { - if( e != 0 ) { - if( e == YRMCDS_SYSTEM_ERROR ) { - error(0, errno, "system error"); - } else { - fprintf(stderr, "yrmcds error: %s\n", yrmcds_strerror(e)); - } - exit(2); - } -} - -void check_response(const yrmcds_response* r) { - if( r->status != YRMCDS_STATUS_OK ) { - fprintf(stderr, "Command failed: 0x%04x %.*s\n", - r->status, (int)r->data_len, r->data); - exit(3); - } -} - -int main(int argc, char** argv) { - yrmcds c; - yrmcds_response r; - - check_error( yrmcds_connect(&c, "localhost", 11211) ); - check_error( yrmcds_noop(&c, NULL) ); - check_error( yrmcds_recv(&c, &r) ); - check_response(&r); - check_error( yrmcds_close(&c) ); - - return 0; -} -``` - -Compilation and linking ------------------------ - -Link with `-lyrmcds -lpthread` as follows: - -``` -gcc -g -O2 -o foo foo.c -lyrmcds -lpthread -``` - -Request serial number ---------------------- - -All command sending functions can issue a unique serial number of the -command. This can be used when you receive responses asynchronously -as described in the next section. - -```c -uint32_t async_cas(yrmcds* c) { - uint32_t serial; - // try compare-and-swap - check_error( yrmcds_set(&c, "abc", 3, "12345", 5, 0, 0, 5, 0, &serial) ); - return serial; -} -``` - -Multi-threading ---------------- - -All functions in libyrmcds are thread-safe as long as different `yrmcds` -structs are used. Additionally, any number of threads can use command -sending functions such as `yrmcds_get()` or `yrmcds_set()` even when -they share the same `yrmcds` struct. - -Further, `yrmcds_recv()` can be used in parallel with command sending -functions. You can create a dedicated thread to receive server responses -asynchronously. Use request serial numbers to identify a response's -request. - -```c -void async_recv(yrmcds* c, void (*notify)(uint32_t, yrmcds_response* r)) { - yrmcds_respone r; - while( 1 ) { - check_error( yrmcds_recv(&c, &r) ); - (*notify)(r.serial, &r); - } -} -``` - -You can use `yrmcds_shutdown()` to interrupt the thread blocking in -`yrmcds_recv()` for graceful exit. - - -Transparent compression ------------------------ - -libyrmcds provides optional transparent data compression by [LZ4][]. - -To use this feature, the library must be built with LZ4 as follows: - -``` -$ make lz4 -$ make -``` - -If the library supports LZ4 compression, you can enable transparent -LZ4 (de)compression for large objects. The threshold for compression -can be set by `yrmcds_set_compression()`. The compression is disabled -by default. - -Note that all clients must support and enable the compression to -properly handle compressed data. - -Text protocol support ---------------------- - -Although libyrmcds is designed for binary protocol, yet it provides -limited access to text protocol commands. Use `yrmcds_text_mode()` -to put the connection into the text protocol mode: - -```c - check_error( yrmcds_connect(&c, "localhost", 11211) ); - check_error( yrmcds_text_mode(&c) ); - - // Use the library API just in the same way as binary protocol. -``` - -Limitations: - -* Only subset of commands can be used. - - `yrmcds_get_touch`, lock related functions, `yrmcds_incr2` and - `yrmcds_decr2`, stat functions, key dump extension are not supported. - -* Quiet mutation cannot be used. - - `quiet` arguments must be 0. You need to receive a response for - every command. - -* `yrmcds_response::cas_unique` is always 0 for storage commands. - - The response for `yrmcds_set`, `yrmcds_add`, or `yrmcds_replace` - will not bring the correct CAS value. Use `yrmcds_get` or - `yrmcds_getk` to retrieve the correct value. - -* `yrmcds_response::command` value is dummy. - - Because `command` is one of binary protocol command numbers. - -Counter extension ------------------ - -yrmcds has a distributed counter extension for resource management. -If the extension is enabled in server, you can access counters by `yrmcds_cnt_*` functions. -The usage of each function is very similar to the corresponding `yrmcds_` function. - -The minimum example is: - -```c -#include <yrmcds.h> - -#include <errno.h> -#include <error.h> -#include <stdio.h> -#include <stdlib.h> - -void check_error(yrmcds_error e) { - if( e != YRMCDS_OK ) { - if( e == YRMCDS_SYSTEM_ERROR ) { - error(0, errno, "system error"); - } else { - fprintf(stderr, "yrmcds error: %s\n", yrmcds_strerror(e)); - } - exit(2); - } -} - -void check_response(const yrmcds_cnt_response* r) { - if( r->status != YRMCDS_STATUS_OK ) { - fprintf(stderr, "Command failed: 0x%02x %.*s\n", - r->status, (int)r->body_length, r->body); - exit(3); - } -} - -int main(void) { - yrmcds_cnt c; - yrmcds_cnt_response r; - - check_error( yrmcds_cnt_connect(&c, "localhost", 11215) ); - check_error( yrmcds_cnt_noop(&c, NULL) ); - check_error( yrmcds_cnt_recv(&c, &r) ); - check_response(&r); - check_error( yrmcds_cnt_close(&c) ); - - return 0; -} -``` - -API documents -------------- - -HTML documents generated with Doxygen is available [here][api]. - - -[api]: http://cybozu.github.io/libyrmcds/html/ -[LZ4]: https://code.google.com/p/lz4/ |