Add cosmo_send_message()

This commit is contained in:
Ian Gulliver
2015-06-06 14:56:23 -07:00
parent 6fd030e0bc
commit b66b7cc083
3 changed files with 16 additions and 0 deletions

View File

@@ -254,6 +254,18 @@ void cosmo_subscribe(cosmo *instance, const json_t *subject, const json_int_t me
cosmo_send_command(instance, cosmo_command("subscribe", arguments));
}
void cosmo_send_message(cosmo *instance, const json_t *subject, json_t *message) {
char sender_message_id[COSMO_UUID_SIZE];
cosmo_generate_uuid(sender_message_id);
char *encoded = json_dumps(message, JSON_ENCODE_ANY);
json_t *arguments = json_pack("{sOssss}",
"subject", subject,
"message", encoded,
"sender_message_id", sender_message_id);
cosmo_send_command(instance, cosmo_command("sendMessage", arguments));
free(encoded);
}
cosmo *cosmo_create(const char *base_url, const char *client_id) {
curl_global_init(CURL_GLOBAL_DEFAULT);
srandomdev();

View File

@@ -29,5 +29,6 @@ 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);
void cosmo_send_message(cosmo *instance, const json_t *subject, json_t *message);
#endif

View File

@@ -8,6 +8,9 @@ int main(int argc, char *argv[]) {
cosmo *instance = cosmo_create("https://playground.cosmopolite.org/cosmopolite", client_id);
json_t *subject = cosmo_subject("foobar", NULL, NULL);
cosmo_subscribe(instance, subject, -1, 0);
json_t *message = json_string("test from C");
cosmo_send_message(instance, subject, message);
json_decref(message);
json_decref(subject);
sleep(120);
cosmo_destroy(instance);