Skip to content

Commit aa7e7bc

Browse files
authored
Rework attachments (#423)
* feat: switch attachment to z_bytes * fix: remove attachment from build and example * feat: remove attachment feature token * fix: init missing query reply attachment option * feat: add api functions for attachments * fix: conversion issue * feat: add attachment examples * fix: check for null value before in drop function * fix: copy attachment * ci: add attachment test * fix: query/reply memory leaks * feat: add get/queryable attachment example * tests: add query/queryable attachment test * fix: rename kv_pairs_length
1 parent 9aa9ed1 commit aa7e7bc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1369
-767
lines changed

.github/workflows/build-check.yaml

+4-6
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
run: |
116116
sudo apt install -y ninja-build
117117
CMAKE_GENERATOR=Ninja make
118-
python3 ./build/tests/modularity.py --pub $Z_FEATURE_PUBLICATION --sub $Z_FEATURE_SUBSCRIPTION --queryable $Z_FEATURE_QUERYABLE --query $Z_FEATURE_QUERY --attachment 0
118+
python3 ./build/tests/modularity.py --pub $Z_FEATURE_PUBLICATION --sub $Z_FEATURE_SUBSCRIPTION --queryable $Z_FEATURE_QUERYABLE --query $Z_FEATURE_QUERY
119119
timeout-minutes: 5
120120
env:
121121
Z_FEATURE_PUBLICATION: ${{ matrix.feature_publication }}
@@ -196,9 +196,9 @@ jobs:
196196
if: always()
197197
run: kill ${{ steps.run-zenoh.outputs.zenohd-pid }}
198198

199-
no_attachment_test:
199+
attachment_test:
200200
needs: zenoh_build
201-
name: Build and test without attachment on ubuntu-latest
201+
name: Test attachments
202202
runs-on: ubuntu-latest
203203
steps:
204204
- name: Checkout code
@@ -222,10 +222,8 @@ jobs:
222222
run: |
223223
sudo apt install -y ninja-build
224224
CMAKE_GENERATOR=Ninja make
225-
python3 ./build/tests/modularity.py --pub 1 --sub 1 --queryable 1 --query 1 --attachment 0
225+
python3 ./build/tests/attachment.py
226226
timeout-minutes: 5
227-
env:
228-
Z_FEATURE_ATTACHMENT: 0
229227

230228
- name: Kill Zenoh router
231229
if: always()

CMakeLists.txt

+2-3
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,13 @@ set(Z_FEATURE_SUBSCRIPTION 1 CACHE STRING "Toggle subscription feature")
132132
set(Z_FEATURE_QUERY 1 CACHE STRING "Toggle query feature")
133133
set(Z_FEATURE_QUERYABLE 1 CACHE STRING "Toggle queryable feature")
134134
set(Z_FEATURE_RAWETH_TRANSPORT 0 CACHE STRING "Toggle raw ethernet transport feature")
135-
set(Z_FEATURE_ATTACHMENT 0 CACHE STRING "Toggle attachment feature")
136135
set(Z_FEATURE_INTEREST 0 CACHE STRING "Toggle interest feature") # Toggle to 1 when protocol changes are merged
137136
add_definition(Z_FEATURE_MULTI_THREAD=${Z_FEATURE_MULTI_THREAD})
138137
add_definition(Z_FEATURE_PUBLICATION=${Z_FEATURE_PUBLICATION})
139138
add_definition(Z_FEATURE_SUBSCRIPTION=${Z_FEATURE_SUBSCRIPTION})
140139
add_definition(Z_FEATURE_QUERY=${Z_FEATURE_QUERY})
141140
add_definition(Z_FEATURE_QUERYABLE=${Z_FEATURE_QUERYABLE})
142141
add_definition(Z_FEATURE_RAWETH_TRANSPORT=${Z_FEATURE_RAWETH_TRANSPORT})
143-
add_definition(Z_FEATURE_ATTACHMENT=${Z_FEATURE_ATTACHMENT})
144142
add_definition(Z_FEATURE_INTEREST=${Z_FEATURE_INTEREST})
145143
add_compile_definitions("Z_BUILD_DEBUG=$<CONFIG:Debug>")
146144
message(STATUS "Building with feature confing:\n\
@@ -149,7 +147,6 @@ message(STATUS "Building with feature confing:\n\
149147
* SUBSCRIPTION: ${Z_FEATURE_SUBSCRIPTION}\n\
150148
* QUERY: ${Z_FEATURE_QUERY}\n\
151149
* QUERYABLE: ${Z_FEATURE_QUERYABLE}\n\
152-
* ATTACHMENT: ${Z_FEATURE_ATTACHMENT}\n\
153150
* INTEREST: ${Z_FEATURE_INTEREST}\n\
154151
* RAWETH: ${Z_FEATURE_RAWETH_TRANSPORT}")
155152

@@ -180,6 +177,7 @@ endif()
180177

181178
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
182179
if(UNIX)
180+
# FIXME: seems to not apply to library files, Issue #422
183181
add_compile_options(-c -Wall -Wextra -Werror -Wshadow -Wpedantic -Wunused -Wstrict-prototypes -pipe -g -O0)
184182
# add_compile_options(-Wconversion)
185183
# add_link_options(-fsanitize=address)
@@ -363,6 +361,7 @@ if(UNIX OR MSVC)
363361
configure_file(${PROJECT_SOURCE_DIR}/tests/raweth.py ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/raweth.py COPYONLY)
364362
configure_file(${PROJECT_SOURCE_DIR}/tests/fragment.py ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/fragment.py COPYONLY)
365363
configure_file(${PROJECT_SOURCE_DIR}/tests/single_thread.py ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/single_thread.py COPYONLY)
364+
configure_file(${PROJECT_SOURCE_DIR}/tests/attachment.py ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/attachment.py COPYONLY)
366365

367366
enable_testing()
368367
add_test(z_data_struct_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_data_struct_test)

GNUmakefile

+1-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ Z_FEATURE_PUBLICATION?=1
5656
Z_FEATURE_SUBSCRIPTION?=1
5757
Z_FEATURE_QUERY?=1
5858
Z_FEATURE_QUERYABLE?=1
59-
Z_FEATURE_ATTACHMENT?=0
6059
Z_FEATURE_INTEREST?=1
6160
Z_FEATURE_RAWETH_TRANSPORT?=0
6261

@@ -76,7 +75,7 @@ CROSSIMG_PREFIX=zenoh-pico_
7675
CMAKE_OPT=-DZENOH_DEBUG=$(ZENOH_DEBUG) -DBUILD_EXAMPLES=$(BUILD_EXAMPLES) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DBUILD_TESTING=$(BUILD_TESTING) -DBUILD_MULTICAST=$(BUILD_MULTICAST)\
7776
-DZ_FEATURE_MULTI_THREAD=$(Z_FEATURE_MULTI_THREAD) -DZ_FEATURE_INTEREST=$(Z_FEATURE_INTEREST) \
7877
-DZ_FEATURE_PUBLICATION=$(Z_FEATURE_PUBLICATION) -DZ_FEATURE_SUBSCRIPTION=$(Z_FEATURE_SUBSCRIPTION) -DZ_FEATURE_QUERY=$(Z_FEATURE_QUERY) -DZ_FEATURE_QUERYABLE=$(Z_FEATURE_QUERYABLE)\
79-
-DZ_FEATURE_RAWETH_TRANSPORT=$(Z_FEATURE_RAWETH_TRANSPORT) -DZ_FEATURE_ATTACHMENT=$(Z_FEATURE_ATTACHMENT) -DBUILD_INTEGRATION=$(BUILD_INTEGRATION) -DBUILD_TOOLS=$(BUILD_TOOLS) -DBUILD_SHARED_LIBS=$(BUILD_SHARED_LIBS) -H.
78+
-DZ_FEATURE_RAWETH_TRANSPORT=$(Z_FEATURE_RAWETH_TRANSPORT) -DBUILD_INTEGRATION=$(BUILD_INTEGRATION) -DBUILD_TOOLS=$(BUILD_TOOLS) -DBUILD_SHARED_LIBS=$(BUILD_SHARED_LIBS) -H.
8079

8180
ifeq ($(FORCE_C99), ON)
8281
CMAKE_OPT += -DCMAKE_C_STANDARD=99

docs/conf.py

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
"-DZ_FEATURE_SUBSCRIPTION=1",
3434
"-DZ_FEATURE_QUERY=1",
3535
"-DZ_FEATURE_QUERYABLE=1",
36-
"-DZ_FEATURE_ATTACHMENT=1",
3736
]
3837

3938
# -- Options for HTML output -------------------------------------------------

examples/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,18 @@ if(UNIX)
3636
add_example(z_put unix/c11/z_put.c)
3737
add_example(z_pub unix/c11/z_pub.c)
3838
add_example(z_pub_st unix/c11/z_pub_st.c)
39+
add_example(z_pub_attachment unix/c11/z_pub_attachment.c)
3940
add_example(z_sub unix/c11/z_sub.c)
4041
add_example(z_sub_channel unix/c11/z_sub_channel.c)
4142
add_example(z_sub_st unix/c11/z_sub_st.c)
43+
add_example(z_sub_attachment unix/c11/z_sub_attachment.c)
4244
add_example(z_pull unix/c11/z_pull.c)
4345
add_example(z_get unix/c11/z_get.c)
4446
add_example(z_get_channel unix/c11/z_get_channel.c)
47+
add_example(z_get_attachment unix/c11/z_get_attachment.c)
4548
add_example(z_queryable unix/c11/z_queryable.c)
4649
add_example(z_queryable_channel unix/c11/z_queryable_channel.c)
50+
add_example(z_queryable_attachment unix/c11/z_queryable_attachment.c)
4751
add_example(z_info unix/c11/z_info.c)
4852
add_example(z_scout unix/c11/z_scout.c)
4953
add_example(z_ping unix/c11/z_ping.c)

examples/unix/c11/z_get.c

-24
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,6 @@ void reply_dropper(void *ctx) {
2929
z_condvar_free(&cond);
3030
}
3131

32-
#if Z_FEATURE_ATTACHMENT == 1
33-
int8_t attachment_handler(z_bytes_t key, z_bytes_t att_value, void *ctx) {
34-
(void)ctx;
35-
printf(">>> %.*s: %.*s\n", (int)key.len, key.start, (int)att_value.len, att_value.start);
36-
return 0;
37-
}
38-
#endif
39-
4032
void reply_handler(const z_loaned_reply_t *reply, void *ctx) {
4133
(void)(ctx);
4234
if (z_reply_is_ok(reply)) {
@@ -47,12 +39,6 @@ void reply_handler(const z_loaned_reply_t *reply, void *ctx) {
4739
z_bytes_decode_into_string(z_sample_payload(sample), &replystr);
4840

4941
printf(">> Received ('%s': '%s')\n", z_string_data(z_loan(keystr)), z_string_data(z_loan(replystr)));
50-
#if Z_FEATURE_ATTACHMENT == 1
51-
if (z_attachment_check(&sample.attachment)) {
52-
printf("Attachement found\n");
53-
z_attachment_iterate(sample.attachment, attachment_handler, NULL);
54-
}
55-
#endif
5642
z_drop(z_move(keystr));
5743
z_drop(z_move(replystr));
5844
} else {
@@ -140,11 +126,6 @@ int main(int argc, char **argv) {
140126
z_bytes_encode_from_string(&payload, value);
141127
opts.payload = &payload;
142128
}
143-
#if Z_FEATURE_ATTACHMENT == 1
144-
z_owned_bytes_map_t map = z_bytes_map_new();
145-
z_bytes_map_insert_by_alias(&map, z_bytes_from_str("hi"), z_bytes_from_str("there"));
146-
opts.attachment = z_bytes_map_as_attachment(&map);
147-
#endif
148129

149130
z_owned_closure_reply_t callback;
150131
z_closure(&callback, reply_handler, reply_dropper);
@@ -160,11 +141,6 @@ int main(int argc, char **argv) {
160141
zp_stop_lease_task(z_loan_mut(s));
161142

162143
z_close(z_move(s));
163-
164-
#if Z_FEATURE_ATTACHMENT == 1
165-
z_bytes_map_drop(&map);
166-
#endif
167-
168144
return 0;
169145
}
170146
#else

0 commit comments

Comments
 (0)