From fffbf0f30cc185ae24aa86bea3129c92bbee3752 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 6 Jun 2015 10:44:46 -0700 Subject: [PATCH] Start of a public header. --- clients/c/cosmopolite.h | 31 +++++++++++++++++++++++++++++++ clients/c/test.c | 25 +++++-------------------- 2 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 clients/c/cosmopolite.h diff --git a/clients/c/cosmopolite.h b/clients/c/cosmopolite.h new file mode 100644 index 0000000..5adf6cb --- /dev/null +++ b/clients/c/cosmopolite.h @@ -0,0 +1,31 @@ +#ifndef _COSMOPOLITE_H +#define _COSMOPOLITE_H + +#include +#include + +#define COSMO_UUID_SIZE 37 + +typedef struct { + char *api_url; + char client_id[COSMO_UUID_SIZE]; + char instance_id[COSMO_UUID_SIZE]; + + pthread_mutex_t lock; + pthread_cond_t cond; + bool shutdown; + json_t *command_queue; + uint64_t next_delay_ms; + + pthread_t thread; +} cosmo; + +void cosmo_generate_uuid(char *uuid); + +cosmo *cosmo_create(const char *base_url, const char *client_id); +void cosmo_destroy(cosmo *instance); + +json_t *cosmo_subject(const char *name, const char *readable_only_by, const char *writeable_only_by); +void cosmo_subscribe(cosmo *instance, const json_t *subject, const json_int_t messages, const json_int_t last_id); + +#endif diff --git a/clients/c/test.c b/clients/c/test.c index ff7132e..7fc8b37 100644 --- a/clients/c/test.c +++ b/clients/c/test.c @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -9,11 +8,11 @@ #include #include -#include #include #include -#define COSMO_UUID_SIZE 37 +#include "cosmopolite.h" + #define COSMO_CHECK_SECONDS 10 #define min(a, b) ((a) < (b) ? (a) : (b)) @@ -24,20 +23,6 @@ #define DELAY_EXPONENT 1.1 #define DELAY_STAGGER_FACTOR 10 -typedef struct { - char *api_url; - char client_id[COSMO_UUID_SIZE]; - char instance_id[COSMO_UUID_SIZE]; - - pthread_mutex_t lock; - pthread_cond_t cond; - bool shutdown; - json_t *command_queue; - uint64_t next_delay_ms; - - pthread_t thread; -} cosmo; - typedef struct { char *send_buf; size_t send_buf_len; @@ -262,7 +247,7 @@ void cosmo_generate_uuid(char *uuid) { uuid_unparse_lower(uu, uuid); } -json_t *cosmo_subject(char *name, char *readable_only_by, char *writeable_only_by) { +json_t *cosmo_subject(const char *name, const char *readable_only_by, const char *writeable_only_by) { json_t *ret = json_pack("{ss}", "name", name); if (readable_only_by) { json_object_set_new(ret, "readable_only_by", json_string(readable_only_by)); @@ -273,7 +258,7 @@ json_t *cosmo_subject(char *name, char *readable_only_by, char *writeable_only_b return ret; } -void cosmo_subscribe(cosmo *instance, json_t *subject, json_int_t messages, json_int_t last_id) { +void cosmo_subscribe(cosmo *instance, const json_t *subject, const json_int_t messages, const json_int_t last_id) { json_t *arguments = json_pack("{sO}", "subject", subject); if (messages) { json_object_set_new(arguments, "messages", json_integer(messages)); @@ -284,7 +269,7 @@ void cosmo_subscribe(cosmo *instance, json_t *subject, json_int_t messages, json cosmo_send_command(instance, cosmo_command("subscribe", arguments)); } -cosmo *cosmo_create(char *base_url, char *client_id) { +cosmo *cosmo_create(const char *base_url, const char *client_id) { curl_global_init(CURL_GLOBAL_DEFAULT); srandomdev();