-
Notifications
You must be signed in to change notification settings - Fork 83
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update closure handlers documentaion (#736) * Rename closure callback/dropper types (#739) * Remove legacy z_zint_t from public API (#741) * Add `export "C"` for all header files (#740) * Add `export "C"` for proper closures callbacks export * Add `export "C"` for all headers * add serialize from substr functions (#742) * Rename z_loaned_hello_handler_t to z_closure_hello_callback_t (#743) * Mark z_reply_replier_id as unstable (#745) * Add documentation about logging (#744) * Update README.md (#746) * hardcode clang-format runner to Ubuntu24.04 (#748) * fix build granularity (#747) * fix: badly named constant (#750) * fix packages * fix: update debian packaging - include libzenohpico.so in debian package - change the package name to libzenohpico in line with libzenohc - set correct debian version for pre releases - fix wrong version used in Release mode * fix: debian dev package name * fix: package version for releases (#753) * fix: debian_version for official releases otherwise they would be undefined * fix: align cpack version with zenoh-c * chore: review comments move cpack version closer to where it's used * build shared lib for packages instead of static one (#757) * Fix z_task cleanup for platforms with pthread support (#759) * Fix read/lease task cleanup (#760) * Align ID string representation with zenoh (lowercase) (#761) * Remove default parameters from z_closure (#755) * build both libraries:shared and static when packaging; (#766) add static library to dev package; * Publish debian packages (#769) * fix: add workflow to release debian packages * fix: align with zenoh-c - update package names - set version string in the same way - set DEBARCH/RPMARCH - set CPACK_PACKAGE_FILE_NAME - add -j to zip archive to not include parent folder * fix: use CPACK_PACKAGE_NAME * fix: pass package name to all build targets * fix: Don't tag release branch during dry-run * Replace exit with return in zephyr examples (#774) * Add platform_common.c to zephyr CMakeLists.txt file * Rework Zenoh ID conversion * chore: Update org secrets (#782) As per eclipse-zenoh/.eclipsefdn#18, secrets were updated to follow eclipse foundation naming convention. * Implement liveliness support (#632) * fix: merge shenanigans * fix: integration test issues * fix: missing send reply final * fix: liveliness double free --------- Co-authored-by: Alexander Bushnev <[email protected]> Co-authored-by: DenisBiryukov91 <[email protected]> Co-authored-by: Denis Biryukov <[email protected]> Co-authored-by: Diogo Mendes Matsubara <[email protected]> Co-authored-by: Luca Cominardi <[email protected]>
- Loading branch information
1 parent
1929633
commit d427b0a
Showing
46 changed files
with
2,215 additions
and
169 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
// | ||
// Copyright (c) 2024 ZettaScale Technology | ||
// | ||
// This program and the accompanying materials are made available under the | ||
// terms of the Eclipse Public License 2.0 which is available at | ||
// http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 | ||
// which is available at https://www.apache.org/licenses/LICENSE-2.0. | ||
// | ||
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 | ||
// | ||
// Contributors: | ||
// ZettaScale Zenoh Team, <[email protected]> | ||
|
||
#include <stddef.h> | ||
#include <stdio.h> | ||
#include <unistd.h> | ||
#include <zenoh-pico.h> | ||
|
||
#if Z_FEATURE_LIVELINESS == 1 && Z_FEATURE_QUERY == 1 | ||
|
||
int main(int argc, char **argv) { | ||
const char *keyexpr = "group1/**"; | ||
const char *mode = "client"; | ||
const char *clocator = NULL; | ||
const char *llocator = NULL; | ||
|
||
int opt; | ||
while ((opt = getopt(argc, argv, "k:e:m:l:")) != -1) { | ||
switch (opt) { | ||
case 'k': | ||
keyexpr = optarg; | ||
break; | ||
case 'e': | ||
clocator = optarg; | ||
break; | ||
case 'm': | ||
mode = optarg; | ||
break; | ||
case 'l': | ||
llocator = optarg; | ||
break; | ||
case '?': | ||
if (optopt == 'k' || optopt == 'e' || optopt == 'm' || optopt == 'v' || optopt == 'l') { | ||
fprintf(stderr, "Option -%c requires an argument.\n", optopt); | ||
} else { | ||
fprintf(stderr, "Unknown option `-%c'.\n", optopt); | ||
} | ||
return 1; | ||
default: | ||
return -1; | ||
} | ||
} | ||
|
||
z_owned_config_t config; | ||
z_config_default(&config); | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_MODE_KEY, mode); | ||
if (clocator != NULL) { | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_CONNECT_KEY, clocator); | ||
} | ||
if (llocator != NULL) { | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_LISTEN_KEY, llocator); | ||
} | ||
|
||
printf("Opening session...\n"); | ||
z_owned_session_t s; | ||
if (z_open(&s, z_move(config), NULL) < 0) { | ||
printf("Unable to open session!\n"); | ||
return -1; | ||
} | ||
|
||
// Start read and lease tasks for zenoh-pico | ||
if (zp_start_read_task(z_loan_mut(s), NULL) < 0 || zp_start_lease_task(z_loan_mut(s), NULL) < 0) { | ||
printf("Unable to start read and lease tasks\n"); | ||
z_session_drop(z_session_move(&s)); | ||
return -1; | ||
} | ||
|
||
z_view_keyexpr_t ke; | ||
if (z_view_keyexpr_from_str(&ke, keyexpr) < 0) { | ||
printf("%s is not a valid key expression", keyexpr); | ||
return -1; | ||
} | ||
|
||
printf("Sending liveliness query '%s'...\n", keyexpr); | ||
z_owned_fifo_handler_reply_t handler; | ||
z_owned_closure_reply_t closure; | ||
z_fifo_channel_reply_new(&closure, &handler, 16); | ||
if (z_liveliness_get(z_loan(s), z_loan(ke), z_move(closure), NULL) < 0) { | ||
printf("Liveliness query failed"); | ||
return -1; | ||
} | ||
z_owned_reply_t reply; | ||
for (z_result_t res = z_recv(z_loan(handler), &reply); res == Z_OK; res = z_recv(z_loan(handler), &reply)) { | ||
if (z_reply_is_ok(z_loan(reply))) { | ||
const z_loaned_sample_t *sample = z_reply_ok(z_loan(reply)); | ||
z_view_string_t key_str; | ||
z_keyexpr_as_view_string(z_sample_keyexpr(sample), &key_str); | ||
printf(">> Alive token ('%.*s')\n", (int)z_string_len(z_loan(key_str)), z_string_data(z_loan(key_str))); | ||
} else { | ||
printf("Received an error\n"); | ||
} | ||
} | ||
|
||
z_drop(z_move(reply)); | ||
z_drop(z_move(handler)); | ||
z_drop(z_move(s)); | ||
return 0; | ||
} | ||
#else | ||
int main(void) { | ||
printf( | ||
"ERROR: Zenoh pico was compiled without Z_FEATURE_QUERY or Z_FEATURE_LIVELINESS but this example requires " | ||
"them.\n"); | ||
return -2; | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
// | ||
// Copyright (c) 2024 ZettaScale Technology | ||
// | ||
// This program and the accompanying materials are made available under the | ||
// terms of the Eclipse Public License 2.0 which is available at | ||
// http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 | ||
// which is available at https://www.apache.org/licenses/LICENSE-2.0. | ||
// | ||
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 | ||
// | ||
// Contributors: | ||
// ZettaScale Zenoh Team, <[email protected]> | ||
|
||
#include <signal.h> | ||
#include <stddef.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <unistd.h> | ||
#include <zenoh-pico.h> | ||
|
||
#if Z_FEATURE_LIVELINESS == 1 | ||
|
||
static volatile int keepRunning = 1; | ||
|
||
void intHandler(int dummy) { | ||
(void)dummy; | ||
keepRunning = 0; | ||
} | ||
|
||
int main(int argc, char **argv) { | ||
const char *keyexpr = "group1/zenoh-pico"; | ||
const char *mode = "client"; | ||
const char *clocator = NULL; | ||
const char *llocator = NULL; | ||
|
||
int opt; | ||
while ((opt = getopt(argc, argv, "k:e:m:l:")) != -1) { | ||
switch (opt) { | ||
case 'k': | ||
keyexpr = optarg; | ||
break; | ||
case 'e': | ||
clocator = optarg; | ||
break; | ||
case 'm': | ||
mode = optarg; | ||
break; | ||
case 'l': | ||
llocator = optarg; | ||
break; | ||
case '?': | ||
if (optopt == 'k' || optopt == 'e' || optopt == 'm' || optopt == 'v' || optopt == 'l') { | ||
fprintf(stderr, "Option -%c requires an argument.\n", optopt); | ||
} else { | ||
fprintf(stderr, "Unknown option `-%c'.\n", optopt); | ||
} | ||
return 1; | ||
default: | ||
return -1; | ||
} | ||
} | ||
|
||
z_owned_config_t config; | ||
z_config_default(&config); | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_MODE_KEY, mode); | ||
if (clocator != NULL) { | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_CONNECT_KEY, clocator); | ||
} | ||
if (llocator != NULL) { | ||
zp_config_insert(z_loan_mut(config), Z_CONFIG_LISTEN_KEY, llocator); | ||
} | ||
|
||
printf("Opening session...\n"); | ||
z_owned_session_t s; | ||
if (z_open(&s, z_move(config), NULL) < 0) { | ||
printf("Unable to open session!\n"); | ||
return -1; | ||
} | ||
|
||
// Start read and lease tasks for zenoh-pico | ||
if (zp_start_read_task(z_loan_mut(s), NULL) < 0 || zp_start_lease_task(z_loan_mut(s), NULL) < 0) { | ||
printf("Unable to start read and lease tasks\n"); | ||
z_session_drop(z_session_move(&s)); | ||
return -1; | ||
} | ||
|
||
z_view_keyexpr_t ke; | ||
if (z_view_keyexpr_from_str(&ke, keyexpr) < 0) { | ||
printf("%s is not a valid key expression", keyexpr); | ||
return -1; | ||
} | ||
|
||
printf("Declaring liveliness token '%s'...\n", keyexpr); | ||
z_owned_liveliness_token_t token; | ||
if (z_liveliness_declare_token(z_loan(s), &token, z_loan(ke), NULL) < 0) { | ||
printf("Unable to create liveliness token!\n"); | ||
exit(-1); | ||
} | ||
|
||
printf("Press CTRL-C to undeclare liveliness token and quit...\n"); | ||
signal(SIGINT, intHandler); | ||
while (keepRunning) { | ||
z_sleep_s(1); | ||
} | ||
|
||
// LivelinessTokens are automatically closed when dropped | ||
// Use the code below to manually undeclare it if needed | ||
printf("Undeclaring liveliness token...\n"); | ||
z_drop(z_move(token)); | ||
|
||
z_drop(z_move(s)); | ||
return 0; | ||
} | ||
#else | ||
int main(void) { | ||
printf( | ||
"ERROR: Zenoh pico was compiled without Z_FEATURE_QUERY or Z_FEATURE_MULTI_THREAD but this example requires " | ||
"them.\n"); | ||
return -2; | ||
} | ||
#endif |
Oops, something went wrong.