@@ -31,7 +31,6 @@ struct RxContext
3131 std::array<udpard_udpip_ep_t , UDPARD_IFACE_COUNT_MAX> sources{};
3232 uint64_t remote_uid = 0 ;
3333 size_t received = 0 ;
34- size_t collisions = 0 ;
3534};
3635
3736// Refcount helpers keep captured datagrams alive.
@@ -115,19 +114,14 @@ void on_message(udpard_rx_t* const rx, udpard_rx_port_t* const port, const udpar
115114 ctx->received ++;
116115}
117116
118- void on_collision (udpard_rx_t * const rx, udpard_rx_port_t * const /* port*/ , const udpard_remote_t /* remote*/ )
119- {
120- auto * ctx = static_cast <RxContext*>(rx->user );
121- ctx->collisions ++;
122- }
123- constexpr udpard_rx_port_vtable_t callbacks{ .on_message = &on_message, .on_collision = &on_collision };
117+ constexpr udpard_rx_port_vtable_t callbacks{ .on_message = &on_message };
124118
125119// Ack port frees responses.
126120void on_ack_response (udpard_rx_t *, udpard_rx_port_t * port, const udpard_rx_transfer_t tr)
127121{
128122 udpard_fragment_free_all (tr.payload , udpard_make_deleter (port->memory .fragment ));
129123}
130- constexpr udpard_rx_port_vtable_t ack_callbacks{ .on_message = &on_ack_response, . on_collision = &on_collision };
124+ constexpr udpard_rx_port_vtable_t ack_callbacks{ .on_message = &on_ack_response };
131125
132126// Reliable delivery must survive data and ack loss.
133127// Each node uses exactly one TX and one RX instance as per the library design.
@@ -163,6 +157,7 @@ void test_reliable_delivery_under_losses()
163157 res = instrumented_allocator_make_resource (&pub_tx_alloc_payload);
164158 }
165159 const udpard_rx_mem_resources_t pub_rx_mem{ .session = instrumented_allocator_make_resource (&pub_rx_alloc_session),
160+ .slot = instrumented_allocator_make_resource (&pub_rx_alloc_session),
166161 .fragment = instrumented_allocator_make_resource (&pub_rx_alloc_frag) };
167162
168163 udpard_tx_mem_resources_t sub_tx_mem{};
@@ -171,6 +166,7 @@ void test_reliable_delivery_under_losses()
171166 res = instrumented_allocator_make_resource (&sub_tx_alloc_payload);
172167 }
173168 const udpard_rx_mem_resources_t sub_rx_mem{ .session = instrumented_allocator_make_resource (&sub_rx_alloc_session),
169+ .slot = instrumented_allocator_make_resource (&sub_rx_alloc_session),
174170 .fragment = instrumented_allocator_make_resource (&sub_rx_alloc_frag) };
175171
176172 // Publisher node: single TX, single RX (linked to TX for ACK processing).
@@ -184,8 +180,7 @@ void test_reliable_delivery_under_losses()
184180 udpard_rx_t pub_rx{};
185181 udpard_rx_new (&pub_rx, &pub_tx);
186182 udpard_rx_port_t pub_p2p_port{};
187- TEST_ASSERT_TRUE (
188- udpard_rx_port_new (&pub_p2p_port, pub_uid, 16 , udpard_rx_unordered, 0 , pub_rx_mem, &ack_callbacks));
183+ TEST_ASSERT_TRUE (udpard_rx_port_new_p2p (&pub_p2p_port, 16 , pub_rx_mem, &ack_callbacks));
189184
190185 // Subscriber node: single TX, single RX (linked to TX for sending ACKs).
191186 constexpr uint64_t sub_uid = 0xABCDEF0012345678ULL ;
@@ -197,8 +192,7 @@ void test_reliable_delivery_under_losses()
197192 udpard_rx_t sub_rx{};
198193 udpard_rx_new (&sub_rx, &sub_tx);
199194 udpard_rx_port_t sub_port{};
200- const uint64_t topic_hash = 0x0123456789ABCDEFULL ;
201- TEST_ASSERT_TRUE (udpard_rx_port_new (&sub_port, topic_hash, 6000 , udpard_rx_unordered, 0 , sub_rx_mem, &callbacks));
195+ TEST_ASSERT_TRUE (udpard_rx_port_new (&sub_port, 6000 , sub_rx_mem, &callbacks));
202196
203197 // Endpoints.
204198 const std::array<udpard_udpip_ep_t , UDPARD_IFACE_COUNT_MAX> publisher_sources{
@@ -235,7 +229,6 @@ void test_reliable_delivery_under_losses()
235229 deadline,
236230 iface_bitmap_all,
237231 udpard_prio_fast,
238- topic_hash,
239232 1U ,
240233 payload_view,
241234 &record_feedback,
@@ -296,8 +289,6 @@ void test_reliable_delivery_under_losses()
296289 TEST_ASSERT_EQUAL_size_t (1 , fb.count );
297290 TEST_ASSERT_EQUAL_UINT32 (1 , fb.acknowledgements );
298291 TEST_ASSERT_EQUAL_size_t (1 , ctx.received );
299- TEST_ASSERT_EQUAL_size_t (0 , ctx.collisions );
300-
301292 // Cleanup.
302293 udpard_rx_port_free (&sub_rx, &sub_port);
303294 udpard_rx_port_free (&pub_rx, &pub_p2p_port);
@@ -350,7 +341,6 @@ void test_reliable_stats_and_failures()
350341 10 ,
351342 iface_bitmap_1,
352343 udpard_prio_fast,
353- 0xABCULL ,
354344 5U ,
355345 exp_payload,
356346 &record_feedback,
@@ -380,6 +370,7 @@ void test_reliable_stats_and_failures()
380370 instrumented_allocator_new (&src_alloc_transfer);
381371 instrumented_allocator_new (&src_alloc_payload);
382372 const udpard_rx_mem_resources_t rx_mem{ .session = instrumented_allocator_make_resource (&rx_alloc_session),
373+ .slot = instrumented_allocator_make_resource (&rx_alloc_session),
383374 .fragment = instrumented_allocator_make_resource (&rx_alloc_frag) };
384375 udpard_tx_mem_resources_t src_mem{};
385376 src_mem.transfer = instrumented_allocator_make_resource (&src_alloc_transfer);
@@ -399,7 +390,7 @@ void test_reliable_stats_and_failures()
399390 ctx.expected .assign ({ 1U , 2U , 3U , 4U });
400391 udpard_rx_new (&rx, nullptr );
401392 rx.user = &ctx;
402- TEST_ASSERT_TRUE (udpard_rx_port_new (&port, 0x12340000ULL , 64 , udpard_rx_unordered, 0 , rx_mem, &callbacks));
393+ TEST_ASSERT_TRUE (udpard_rx_port_new (&port, 64 , rx_mem, &callbacks));
403394
404395 const udpard_bytes_scattered_t src_payload = make_scattered (ctx.expected .data (), ctx.expected .size ());
405396 FeedbackState fb_ignore{};
@@ -408,7 +399,6 @@ void test_reliable_stats_and_failures()
408399 1000 ,
409400 iface_bitmap_1,
410401 udpard_prio_fast,
411- port.topic_hash ,
412402 7U ,
413403 src_payload,
414404 &record_feedback,
0 commit comments