Examples¶
Publish¶
#include <string.h>
#include "zenoh.h"
int main(int argc, char **argv) {
z_owned_config_t config = z_config_default();
z_owned_session_t s = z_open(z_move(config));
char* value = "value";
z_put(z_loan(s), z_keyexpr("key/expression"), (const uint8_t *)value, strlen(value), NULL);
z_close(z_move(s));
return 0;
}
Subscribe¶
#include <stdio.h>
#include "zenoh.h"
void data_handler(const z_sample_t *sample, const void *arg) {
char *keystr = z_keyexpr_to_string(sample->keyexpr);
printf(">> Received (%s, %.*s)\n",
keystr, (int)sample->payload.len, sample->payload.start);
free(keystr);
}
int main(int argc, char **argv) {
z_owned_config_t config = z_config_default();
z_owned_session_t s = z_open(z_move(config));
z_owned_closure_sample_t callback = z_closure(data_handler);
z_owned_subscriber_t sub = z_declare_subscriber(z_loan(s), z_keyexpr("key/expression"), z_move(callback), NULL);
char c = 0;
while (c != 'q') {
c = fgetc(stdin);
}
z_undeclare_subscriber(z_move(sub));
z_close(z_move(s));
return 0;
}
Query¶
#include <stdio.h>
#include "zenoh.h"
int main(int argc, char** argv) {
z_owned_config_t config = z_config_default();
z_owned_session_t s = z_open(z_move(config));
z_owned_reply_channel_t channel = z_reply_fifo_new(16);
z_get(z_loan(s), z_keyexpr("key/expression"), "", z_move(channel.send), NULL);
z_owned_reply_t reply = z_reply_null();
for (z_call(channel.recv, &reply); z_check(reply); z_call(channel.recv, &reply))
{
if (z_reply_is_ok(&reply))
{
z_sample_t sample = z_reply_ok(&reply);
char *keystr = z_keyexpr_to_string(sample.keyexpr);
printf(">> Received ('%s': '%.*s')\n", keystr, (int)sample.payload.len, sample.payload.start);
free(keystr);
}
}
z_drop(reply);
z_drop(channel);
z_close(z_move(s));
return 0;
}