diff options
author | rsiddharth <s@ricketyspace.net> | 2019-11-14 18:51:28 -0500 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2020-04-17 20:56:35 -0400 |
commit | f7217c512e54c0991af35627ecaaba3d8b7fb9be (patch) | |
tree | 6ef0e2027af6c4469ce60b0631285472ab15ce0e /nserver | |
parent | 1993bfc6cee9f87ee50137bfe9bae49d513d7cbb (diff) |
nserver: protocol.h: Add sslist.
* nserver/src/protocol.c (sslist): New function.
* nserver/src/protocol.h (sslist): New function declaration.
* nserver/tests/protocol_tests.c (test_sslist): Test fr sslist.
(all_tests): Add test_sslist.
Diffstat (limited to 'nserver')
-rw-r--r-- | nserver/src/protocol.c | 30 | ||||
-rw-r--r-- | nserver/src/protocol.h | 3 | ||||
-rw-r--r-- | nserver/tests/protocol_tests.c | 12 |
3 files changed, 45 insertions, 0 deletions
diff --git a/nserver/src/protocol.c b/nserver/src/protocol.c index c771e4e..79a379c 100644 --- a/nserver/src/protocol.c +++ b/nserver/src/protocol.c @@ -122,3 +122,33 @@ char *ssdump(char *key) error: return NULL; } + +char *sslist() +{ + check(hash != NULL, "hash not initiliazed"); + + // 1. Get keys. + DArray *ks = Hashmap_keys(hash); + check(ks != NULL, "error getting keys"); + + bstring ks_str = bfromcstr(""); + check(ks_str != NULL, "error creating keys_str"); + + int i, rc; + bstring k = NULL; + for (i = 0; i < DArray_count(ks); ++i) { + k = (bstring) DArray_get(ks, i); + check(k != NULL, "k at %d", i); + + rc = bconcat(ks_str, k); + check(rc == BSTR_OK, "bstr key concat failed"); + + rc = bconchar(ks_str, '\n'); + check(rc == BSTR_OK, "bstr newline concat failed"); + } + + return bstr2cstr(ks_str, ' '); + error: + return NULL; +} + diff --git a/nserver/src/protocol.h b/nserver/src/protocol.h index 3d357d9..921640c 100644 --- a/nserver/src/protocol.h +++ b/nserver/src/protocol.h @@ -1,7 +1,9 @@ #ifndef _protocol_h #define _protocol_h + #include <bstrlib.h> +#include <darray.h> #include <hashmap.h> #include <stats.h> #include <dbg.h> @@ -11,6 +13,7 @@ int ssdelete(char *key); int sssample(char *key, double s); double ssmean(char *key); char *ssdump(char *key); +char *sslist(); #endif diff --git a/nserver/tests/protocol_tests.c b/nserver/tests/protocol_tests.c index 96450be..8309686 100644 --- a/nserver/tests/protocol_tests.c +++ b/nserver/tests/protocol_tests.c @@ -86,6 +86,17 @@ char *test_ssdump() return NULL; } +char *test_sslist() +{ + char *ks = sslist(); + mu_assert(ks != NULL, "sslist failed"); + mu_assert(strlen(ks) == 19, "length check failed"); + + debug("KEYS:\n %s", ks); + + return NULL; +} + char *test_ssdelete() { int rc = 0; @@ -110,6 +121,7 @@ char *all_tests() mu_run_test(test_sssample); mu_run_test(test_ssmean); mu_run_test(test_ssdump); + mu_run_test(test_sslist); mu_run_test(test_ssdelete); return NULL; |