Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Align examples and remove reading from stdin #359

Merged
merged 9 commits into from
Mar 21, 2024
26 changes: 26 additions & 0 deletions examples/unix/c11/z_get.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,30 @@
// ZettaScale Zenoh Team, <[email protected]>

#include <ctype.h>
#include <errno.h>
#include <pthread.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <zenoh-pico.h>

#if Z_FEATURE_QUERY == 1
#define QUERY_TIMEOUT 10 // query timeout in seconds
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: we'll have to revise this example when timeout is exposed by zenoh pico

#define handle_error_en(en, msg) \
do { \
errno = en; \
perror(msg); \
exit(EXIT_FAILURE); \
} while (0)
pthread_cond_t cond;
pthread_mutex_t mutex;

void reply_dropper(void *ctx) {
(void)(ctx);
printf(">> Received query final notification\n");
pthread_cond_signal(&cond);
pthread_cond_destroy(&cond);
Copy link
Contributor

@jean-roland jean-roland Mar 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should use the public sync mechanisms found in include/zenoh-pico/system/platform.h, this impacts all the following pthread_cond and pthread_mutex calls, see z_ping for an example of usage.

}

void reply_handler(z_owned_reply_t *reply, void *ctx) {
Expand Down Expand Up @@ -73,6 +87,9 @@ int main(int argc, char **argv) {
}
}

pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);

z_owned_config_t config = z_config_default();
zp_config_insert(z_loan(config), Z_CONFIG_MODE_KEY, z_string_make(mode));
if (clocator != NULL) {
Expand Down Expand Up @@ -102,6 +119,7 @@ int main(int argc, char **argv) {
return -1;
}

pthread_mutex_lock(&mutex);
printf("Sending Query '%s'...\n", keyexpr);
z_get_options_t opts = z_get_options_default();
if (value != NULL) {
Expand All @@ -112,6 +130,14 @@ int main(int argc, char **argv) {
printf("Unable to send query.\n");
return -1;
}
struct timespec query_timeout;
clock_gettime(CLOCK_REALTIME, &query_timeout);
Copy link
Contributor

@jean-roland jean-roland Mar 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should use the public timer mechanisms found in include/zenoh-pico/system/platform.h, this impacts all the following clock calls, see z_ping for an example of usage.

query_timeout.tv_sec += QUERY_TIMEOUT;
int err = pthread_cond_timedwait(&cond, &mutex, &query_timeout);
if (err != 0) {
handle_error_en(err, "pthread_cond_timedwait");
}
pthread_mutex_unlock(&mutex);

// Stop read and lease tasks for zenoh-pico
zp_stop_read_task(z_loan(s));
Expand Down
26 changes: 26 additions & 0 deletions examples/unix/c99/z_get.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,30 @@
// ZettaScale Zenoh Team, <[email protected]>

#include <ctype.h>
#include <errno.h>
#include <pthread.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <zenoh-pico.h>

#if Z_FEATURE_QUERY == 1
#define QUERY_TIMEOUT 10 // query timeout in seconds
#define handle_error_en(en, msg) \
do { \
errno = en; \
perror(msg); \
exit(EXIT_FAILURE); \
} while (0)
pthread_cond_t cond;
pthread_mutex_t mutex;

void reply_dropper(void *ctx) {
(void)(ctx);
printf(">> Received query final notification\n");
pthread_cond_signal(&cond);
pthread_cond_destroy(&cond);
}

void reply_handler(z_owned_reply_t *reply, void *ctx) {
Expand Down Expand Up @@ -73,6 +87,9 @@ int main(int argc, char **argv) {
}
}

pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);

z_owned_config_t config = z_config_default();
zp_config_insert(z_config_loan(&config), Z_CONFIG_MODE_KEY, z_string_make(mode));
if (clocator != NULL) {
Expand Down Expand Up @@ -102,6 +119,7 @@ int main(int argc, char **argv) {
return -1;
}

pthread_mutex_lock(&mutex);
printf("Sending Query '%s'...\n", keyexpr);
z_get_options_t opts = z_get_options_default();
if (value != NULL) {
Expand All @@ -112,6 +130,14 @@ int main(int argc, char **argv) {
printf("Unable to send query.\n");
return -1;
}
struct timespec query_timeout;
clock_gettime(CLOCK_REALTIME, &query_timeout);
query_timeout.tv_sec += QUERY_TIMEOUT;
int err = pthread_cond_timedwait(&cond, &mutex, &query_timeout);
if (err != 0) {
handle_error_en(err, "pthread_cond_timedwait");
}
pthread_mutex_unlock(&mutex);

// Stop read and lease tasks for zenoh-pico
zp_stop_read_task(z_session_loan(&s));
Expand Down
26 changes: 26 additions & 0 deletions examples/windows/z_get.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,29 @@
// ZettaScale Zenoh Team, <[email protected]>

#include <ctype.h>
#include <errno.h>
#include <pthread.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <zenoh-pico.h>

#if Z_FEATURE_QUERY == 1
#define QUERY_TIMEOUT 10 // query timeout in seconds
#define handle_error_en(en, msg) \
do { \
errno = en; \
perror(msg); \
exit(EXIT_FAILURE); \
} while (0)
pthread_cond_t cond;
pthread_mutex_t mutex;

void reply_dropper(void *ctx) {
(void)(ctx);
printf(">> Received query final notification\n");
pthread_cond_signal(&cond);
pthread_cond_destroy(&cond);
}

void reply_handler(z_owned_reply_t *reply, void *ctx) {
Expand All @@ -42,6 +56,9 @@ int main(int argc, char **argv) {
const char *locator = NULL;
const char *value = NULL;

pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);

z_owned_config_t config = z_config_default();
if (locator != NULL) {
zp_config_insert(z_loan(config), Z_CONFIG_CONNECT_KEY, z_string_make(locator));
Expand All @@ -67,6 +84,7 @@ int main(int argc, char **argv) {
return -1;
}

pthread_mutex_lock(&mutex);
printf("Sending Query '%s'...\n", keyexpr);
z_get_options_t opts = z_get_options_default();
if (value != NULL) {
Expand All @@ -77,6 +95,14 @@ int main(int argc, char **argv) {
printf("Unable to send query.\n");
return -1;
}
struct timespec query_timeout;
clock_gettime(CLOCK_REALTIME, &query_timeout);
query_timeout.tv_sec += QUERY_TIMEOUT;
int err = pthread_cond_timedwait(&cond, &mutex, &query_timeout);
if (err != 0) {
handle_error_en(err, "pthread_cond_timedwait");
}
pthread_mutex_unlock(&mutex);

// Stop read and lease tasks for zenoh-pico
zp_stop_read_task(z_loan(s));
Expand Down