summaryrefslogtreecommitdiffstats
path: root/nserver
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-11-14 18:51:28 -0500
committerrsiddharth <s@ricketyspace.net>2020-04-17 20:56:35 -0400
commitf7217c512e54c0991af35627ecaaba3d8b7fb9be (patch)
tree6ef0e2027af6c4469ce60b0631285472ab15ce0e /nserver
parent1993bfc6cee9f87ee50137bfe9bae49d513d7cbb (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.c30
-rw-r--r--nserver/src/protocol.h3
-rw-r--r--nserver/tests/protocol_tests.c12
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;