Skip to content

Commit 6dea3bf

Browse files
Fix wire_expr mapping (#1330)
* Fix wire_expr mapping * Fix find and replace error
1 parent 1d4c5c8 commit 6dea3bf

File tree

16 files changed

+149
-82
lines changed

16 files changed

+149
-82
lines changed

zenoh/src/net/routing/dispatcher/resource.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,11 @@ impl Resource {
461461
}
462462

463463
#[inline]
464-
pub fn decl_key(res: &Arc<Resource>, face: &mut Arc<FaceState>) -> WireExpr<'static> {
464+
pub fn decl_key(
465+
res: &Arc<Resource>,
466+
face: &mut Arc<FaceState>,
467+
push: bool,
468+
) -> WireExpr<'static> {
465469
let (nonwild_prefix, wildsuffix) = Resource::nonwild_prefix(res);
466470
match nonwild_prefix {
467471
Some(mut nonwild_prefix) => {
@@ -484,11 +488,13 @@ impl Resource {
484488
};
485489
}
486490
}
487-
if face.remote_key_interests.values().any(|res| {
488-
res.as_ref()
489-
.map(|res| res.matches(&nonwild_prefix))
490-
.unwrap_or(true)
491-
}) {
491+
if push
492+
|| face.remote_key_interests.values().any(|res| {
493+
res.as_ref()
494+
.map(|res| res.matches(&nonwild_prefix))
495+
.unwrap_or(true)
496+
})
497+
{
492498
let ctx = get_mut_unchecked(&mut nonwild_prefix)
493499
.session_ctxs
494500
.entry(face.id)

zenoh/src/net/routing/hat/client/interests.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ pub(super) fn interests_new_face(tables: &mut Tables, face: &mut Arc<FaceState>)
5353
finalized: false,
5454
},
5555
);
56-
let wire_expr = res.as_ref().map(|res| Resource::decl_key(res, face));
56+
let wire_expr = res.as_ref().map(|res| Resource::decl_key(res, face, true));
5757
face.primitives.send_interest(RoutingContext::with_expr(
5858
Interest {
5959
id,
@@ -125,7 +125,9 @@ impl HatInterestTrait for HatCode {
125125
.insert(id, (interest.clone(), cancellation_token));
126126
CurrentInterestCleanup::spawn_interest_clean_up_task(dst_face, tables_ref, id);
127127
}
128-
let wire_expr = res.as_ref().map(|res| Resource::decl_key(res, dst_face));
128+
let wire_expr = res
129+
.as_ref()
130+
.map(|res| Resource::decl_key(res, dst_face, true));
129131
dst_face.primitives.send_interest(RoutingContext::with_expr(
130132
Interest {
131133
id,

zenoh/src/net/routing/hat/client/pubsub.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fn propagate_simple_subscription_to(
5656
{
5757
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
5858
face_hat_mut!(dst_face).local_subs.insert(res.clone(), id);
59-
let key_expr = Resource::decl_key(res, dst_face);
59+
let key_expr = Resource::decl_key(res, dst_face, true);
6060
send_declare(
6161
&dst_face.primitives,
6262
RoutingContext::with_expr(

zenoh/src/net/routing/hat/client/queries.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ fn propagate_simple_queryable(
104104
face_hat_mut!(&mut dst_face)
105105
.local_qabls
106106
.insert(res.clone(), (id, info));
107-
let key_expr = Resource::decl_key(res, &mut dst_face);
107+
let key_expr = Resource::decl_key(res, &mut dst_face, true);
108108
send_declare(
109109
&dst_face.primitives,
110110
RoutingContext::with_expr(

zenoh/src/net/routing/hat/client/token.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn propagate_simple_token_to(
4545
{
4646
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
4747
face_hat_mut!(dst_face).local_tokens.insert(res.clone(), id);
48-
let key_expr = Resource::decl_key(res, dst_face);
48+
let key_expr = Resource::decl_key(res, dst_face, true);
4949
send_declare(
5050
&dst_face.primitives,
5151
RoutingContext::with_expr(
@@ -120,7 +120,7 @@ fn declare_simple_token(
120120

121121
propagate_simple_token(tables, res, face, send_declare);
122122

123-
let wire_expr = Resource::decl_key(res, face);
123+
let wire_expr = Resource::decl_key(res, face, true);
124124
if let Some(interest_id) = interest_id {
125125
if let Some((interest, _)) = face.pending_current_interests.get(&interest_id) {
126126
send_declare(
@@ -312,7 +312,7 @@ pub(crate) fn declare_token_interest(
312312
} else {
313313
0
314314
};
315-
let wire_expr = Resource::decl_key(res, face);
315+
let wire_expr = Resource::decl_key(res, face, true);
316316
send_declare(
317317
&face.primitives,
318318
RoutingContext::with_expr(
@@ -343,7 +343,7 @@ pub(crate) fn declare_token_interest(
343343
} else {
344344
0
345345
};
346-
let wire_expr = Resource::decl_key(token, face);
346+
let wire_expr = Resource::decl_key(token, face, true);
347347
send_declare(
348348
&face.primitives,
349349
RoutingContext::with_expr(
@@ -379,7 +379,7 @@ pub(crate) fn declare_token_interest(
379379
} else {
380380
0
381381
};
382-
let wire_expr = Resource::decl_key(token, face);
382+
let wire_expr = Resource::decl_key(token, face, true);
383383
send_declare(
384384
&face.primitives,
385385
RoutingContext::with_expr(

zenoh/src/net/routing/hat/linkstate_peer/pubsub.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ fn send_sourced_subscription_to_net_children(
6666
.map(|src_face| someface.id != src_face.id)
6767
.unwrap_or(true)
6868
{
69-
let key_expr = Resource::decl_key(res, &mut someface);
69+
let push_declaration = someface.whatami != WhatAmI::Client;
70+
let key_expr = Resource::decl_key(res, &mut someface, push_declaration);
7071

7172
someface.primitives.send_declare(RoutingContext::with_expr(
7273
Declare {
@@ -108,7 +109,7 @@ fn propagate_simple_subscription_to(
108109
if dst_face.whatami != WhatAmI::Client {
109110
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
110111
face_hat_mut!(dst_face).local_subs.insert(res.clone(), id);
111-
let key_expr = Resource::decl_key(res, dst_face);
112+
let key_expr = Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
112113
send_declare(
113114
&dst_face.primitives,
114115
RoutingContext::with_expr(
@@ -145,7 +146,8 @@ fn propagate_simple_subscription_to(
145146
if !face_hat!(dst_face).local_subs.contains_key(res) {
146147
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
147148
face_hat_mut!(dst_face).local_subs.insert(res.clone(), id);
148-
let key_expr = Resource::decl_key(res, dst_face);
149+
let key_expr =
150+
Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
149151
send_declare(
150152
&dst_face.primitives,
151153
RoutingContext::with_expr(
@@ -352,7 +354,8 @@ fn send_forget_sourced_subscription_to_net_children(
352354
.map(|src_face| someface.id != src_face.id)
353355
.unwrap_or(true)
354356
{
355-
let wire_expr = Resource::decl_key(res, &mut someface);
357+
let push_declaration = someface.whatami != WhatAmI::Client;
358+
let wire_expr = Resource::decl_key(res, &mut someface, push_declaration);
356359

357360
someface.primitives.send_declare(RoutingContext::with_expr(
358361
Declare {
@@ -702,7 +705,7 @@ pub(super) fn declare_sub_interest(
702705
} else {
703706
0
704707
};
705-
let wire_expr = Resource::decl_key(res, face);
708+
let wire_expr = Resource::decl_key(res, face, face.whatami != WhatAmI::Client);
706709
send_declare(
707710
&face.primitives,
708711
RoutingContext::with_expr(
@@ -734,7 +737,8 @@ pub(super) fn declare_sub_interest(
734737
} else {
735738
0
736739
};
737-
let wire_expr = Resource::decl_key(sub, face);
740+
let wire_expr =
741+
Resource::decl_key(sub, face, face.whatami != WhatAmI::Client);
738742
send_declare(
739743
&face.primitives,
740744
RoutingContext::with_expr(
@@ -767,7 +771,7 @@ pub(super) fn declare_sub_interest(
767771
} else {
768772
0
769773
};
770-
let wire_expr = Resource::decl_key(sub, face);
774+
let wire_expr = Resource::decl_key(sub, face, face.whatami != WhatAmI::Client);
771775
send_declare(
772776
&face.primitives,
773777
RoutingContext::with_expr(

zenoh/src/net/routing/hat/linkstate_peer/queries.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ fn send_sourced_queryable_to_net_children(
138138
.map(|src_face| someface.id != src_face.id)
139139
.unwrap_or(true)
140140
{
141-
let key_expr = Resource::decl_key(res, &mut someface);
141+
let push_declaration = someface.whatami != WhatAmI::Client;
142+
let key_expr = Resource::decl_key(res, &mut someface, push_declaration);
142143

143144
someface.primitives.send_declare(RoutingContext::with_expr(
144145
Declare {
@@ -191,7 +192,8 @@ fn propagate_simple_queryable(
191192
face_hat_mut!(&mut dst_face)
192193
.local_qabls
193194
.insert(res.clone(), (id, info));
194-
let key_expr = Resource::decl_key(res, &mut dst_face);
195+
let push_declaration = dst_face.whatami != WhatAmI::Client;
196+
let key_expr = Resource::decl_key(res, &mut dst_face, push_declaration);
195197
send_declare(
196198
&dst_face.primitives,
197199
RoutingContext::with_expr(
@@ -369,7 +371,8 @@ fn send_forget_sourced_queryable_to_net_children(
369371
.map(|src_face| someface.id != src_face.id)
370372
.unwrap_or(true)
371373
{
372-
let wire_expr = Resource::decl_key(res, &mut someface);
374+
let push_declaration = someface.whatami != WhatAmI::Client;
375+
let wire_expr = Resource::decl_key(res, &mut someface, push_declaration);
373376

374377
someface.primitives.send_declare(RoutingContext::with_expr(
375378
Declare {
@@ -767,7 +770,7 @@ pub(super) fn declare_qabl_interest(
767770
} else {
768771
0
769772
};
770-
let wire_expr = Resource::decl_key(res, face);
773+
let wire_expr = Resource::decl_key(res, face, face.whatami != WhatAmI::Client);
771774
send_declare(
772775
&face.primitives,
773776
RoutingContext::with_expr(
@@ -803,7 +806,8 @@ pub(super) fn declare_qabl_interest(
803806
} else {
804807
0
805808
};
806-
let key_expr = Resource::decl_key(qabl, face);
809+
let key_expr =
810+
Resource::decl_key(qabl, face, face.whatami != WhatAmI::Client);
807811
send_declare(
808812
&face.primitives,
809813
RoutingContext::with_expr(
@@ -839,7 +843,7 @@ pub(super) fn declare_qabl_interest(
839843
} else {
840844
0
841845
};
842-
let key_expr = Resource::decl_key(qabl, face);
846+
let key_expr = Resource::decl_key(qabl, face, face.whatami != WhatAmI::Client);
843847
send_declare(
844848
&face.primitives,
845849
RoutingContext::with_expr(

zenoh/src/net/routing/hat/linkstate_peer/token.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ fn send_sourced_token_to_net_clildren(
5454
.map(|src_face| someface.id != src_face.id)
5555
.unwrap_or(true)
5656
{
57-
let key_expr = Resource::decl_key(res, &mut someface);
57+
let push_declaration = someface.whatami != WhatAmI::Client;
58+
let key_expr = Resource::decl_key(res, &mut someface, push_declaration);
5859

5960
someface.primitives.send_declare(RoutingContext::with_expr(
6061
Declare {
@@ -94,7 +95,7 @@ fn propagate_simple_token_to(
9495
if dst_face.whatami != WhatAmI::Client {
9596
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
9697
face_hat_mut!(dst_face).local_tokens.insert(res.clone(), id);
97-
let key_expr = Resource::decl_key(res, dst_face);
98+
let key_expr = Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
9899
send_declare(
99100
&dst_face.primitives,
100101
RoutingContext::with_expr(
@@ -128,7 +129,8 @@ fn propagate_simple_token_to(
128129
if !face_hat!(dst_face).local_tokens.contains_key(res) {
129130
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
130131
face_hat_mut!(dst_face).local_tokens.insert(res.clone(), id);
131-
let key_expr = Resource::decl_key(res, dst_face);
132+
let key_expr =
133+
Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
132134
send_declare(
133135
&dst_face.primitives,
134136
RoutingContext::with_expr(
@@ -320,7 +322,8 @@ fn send_forget_sourced_token_to_net_clildren(
320322
.map(|src_face| someface.id != src_face.id)
321323
.unwrap_or(true)
322324
{
323-
let wire_expr = Resource::decl_key(res, &mut someface);
325+
let push_declaration = someface.whatami != WhatAmI::Client;
326+
let wire_expr = Resource::decl_key(res, &mut someface, push_declaration);
324327

325328
someface.primitives.send_declare(RoutingContext::with_expr(
326329
Declare {
@@ -656,7 +659,7 @@ pub(crate) fn declare_token_interest(
656659
} else {
657660
0
658661
};
659-
let wire_expr = Resource::decl_key(res, face);
662+
let wire_expr = Resource::decl_key(res, face, face.whatami != WhatAmI::Client);
660663
send_declare(
661664
&face.primitives,
662665
RoutingContext::with_expr(
@@ -685,7 +688,8 @@ pub(crate) fn declare_token_interest(
685688
} else {
686689
0
687690
};
688-
let wire_expr = Resource::decl_key(token, face);
691+
let wire_expr =
692+
Resource::decl_key(token, face, face.whatami != WhatAmI::Client);
689693
send_declare(
690694
&face.primitives,
691695
RoutingContext::with_expr(
@@ -715,7 +719,8 @@ pub(crate) fn declare_token_interest(
715719
} else {
716720
0
717721
};
718-
let wire_expr = Resource::decl_key(token, face);
722+
let wire_expr =
723+
Resource::decl_key(token, face, face.whatami != WhatAmI::Client);
719724
send_declare(
720725
&face.primitives,
721726
RoutingContext::with_expr(

zenoh/src/net/routing/hat/p2p_peer/interests.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ pub(super) fn interests_new_face(tables: &mut Tables, face: &mut Arc<FaceState>)
5757
finalized: false,
5858
},
5959
);
60-
let wire_expr = res.as_ref().map(|res| Resource::decl_key(res, face));
60+
let wire_expr = res
61+
.as_ref()
62+
.map(|res| Resource::decl_key(res, face, face.whatami != WhatAmI::Client));
6163
face.primitives.send_interest(RoutingContext::with_expr(
6264
Interest {
6365
id,
@@ -152,7 +154,9 @@ impl HatInterestTrait for HatCode {
152154
.insert(id, (interest.clone(), cancellation_token));
153155
CurrentInterestCleanup::spawn_interest_clean_up_task(dst_face, tables_ref, id);
154156
}
155-
let wire_expr = res.as_ref().map(|res| Resource::decl_key(res, dst_face));
157+
let wire_expr = res
158+
.as_ref()
159+
.map(|res| Resource::decl_key(res, dst_face, dst_face.whatami == WhatAmI::Client));
156160
dst_face.primitives.send_interest(RoutingContext::with_expr(
157161
Interest {
158162
id,

zenoh/src/net/routing/hat/p2p_peer/pubsub.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ fn propagate_simple_subscription_to(
6060
if dst_face.whatami != WhatAmI::Client {
6161
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
6262
face_hat_mut!(dst_face).local_subs.insert(res.clone(), id);
63-
let key_expr = Resource::decl_key(res, dst_face);
63+
let key_expr = Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
6464
send_declare(
6565
&dst_face.primitives,
6666
RoutingContext::with_expr(
@@ -97,7 +97,8 @@ fn propagate_simple_subscription_to(
9797
if !face_hat!(dst_face).local_subs.contains_key(res) {
9898
let id = face_hat!(dst_face).next_id.fetch_add(1, Ordering::SeqCst);
9999
face_hat_mut!(dst_face).local_subs.insert(res.clone(), id);
100-
let key_expr = Resource::decl_key(res, dst_face);
100+
let key_expr =
101+
Resource::decl_key(res, dst_face, dst_face.whatami != WhatAmI::Client);
101102
send_declare(
102103
&dst_face.primitives,
103104
RoutingContext::with_expr(
@@ -432,7 +433,7 @@ pub(super) fn declare_sub_interest(
432433
} else {
433434
0
434435
};
435-
let wire_expr = Resource::decl_key(res, face);
436+
let wire_expr = Resource::decl_key(res, face, face.whatami != WhatAmI::Client);
436437
send_declare(
437438
&face.primitives,
438439
RoutingContext::with_expr(
@@ -468,7 +469,8 @@ pub(super) fn declare_sub_interest(
468469
} else {
469470
0
470471
};
471-
let wire_expr = Resource::decl_key(sub, face);
472+
let wire_expr =
473+
Resource::decl_key(sub, face, face.whatami != WhatAmI::Client);
472474
send_declare(
473475
&face.primitives,
474476
RoutingContext::with_expr(
@@ -509,7 +511,8 @@ pub(super) fn declare_sub_interest(
509511
} else {
510512
0
511513
};
512-
let wire_expr = Resource::decl_key(sub, face);
514+
let wire_expr =
515+
Resource::decl_key(sub, face, face.whatami != WhatAmI::Client);
513516
send_declare(
514517
&face.primitives,
515518
RoutingContext::with_expr(

0 commit comments

Comments
 (0)