1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//! # hiroz — Zenoh-native ROS 2 in pure Rust
//!
//! `hiroz` provides ROS 2-style pub/sub, services, and actions built directly
//! on [Zenoh](https://zenoh.io), with no C/C++ dependencies.
//!
//! ## Getting started
//!
//! ```rust,ignore
//! use hiroz::prelude::*;
//! use hiroz_msgs::std_msgs::String as RosString;
//!
//! let ctx = ZContextBuilder::default().build()?;
//! let node = ctx.create_node("talker").build()?;
//! let publisher = node.create_pub::<RosString>("/chatter").build()?;
//! publisher.async_publish(&RosString { data: "hello".into() }).await?;
//! ```
//!
//! ## Sync and async APIs
//!
//! Most hiroz types expose both a blocking and an async variant of each
//! operation. The naming convention is:
//!
//! | Suffix | Behaviour |
//! |--------|-----------|
//! | *(none)* | Blocking — safe to call from any context |
//! | `_async` | Async — must be `.await`ed inside a Tokio (or compatible) runtime |
//!
//! For example, [`ZPub::publish`](pubsub::ZPub::publish) blocks until
//! the put completes, while [`ZPub::async_publish`](pubsub::ZPub::async_publish)
//! yields to the async executor.
//!
//! ## Imports
//!
//! The easiest way to import all common types is via the prelude:
//!
//! ```rust,ignore
//! use hiroz::prelude::*;
//! ```
//!
//! Or import types individually from their modules.
/// ROS 2 action support (goal, feedback, result).
/// Attachment helpers for carrying metadata alongside messages.
/// Timestamp-indexed, capacity-bounded message cache.
/// Configuration types and builder helpers.
/// Zenoh session context and context builder.
/// Dynamic (schema-less) message support.
/// Entity identity types (`TypeHash`, `TypeInfo`).
/// Graph events emitted by the Zenoh network graph.
/// ROS 2 graph introspection (node/topic/service discovery).
/// ROS 2 lifecycle node support (state machine, lifecycle publisher).
/// Typed message wrappers and helpers.
/// ROS 2 node creation and management.
/// Convenience re-exports for common hiroz types.
/// Publishers and subscribers.
/// Python FFI bridge types.
/// Quality-of-Service profiles and options.
/// Internal message queues.
/// Message type metadata traits (`WithTypeInfo`, etc.).
/// ROS 2 service client and server.
/// Shared-memory transport helpers.
/// Time and clock primitives for runtime and replay integration.
/// ROS 2 topic name validation and manipulation.
/// Owned Zenoh buffer type.
/// Zero-copy buffer view for Python bindings.
/// ROS 2 parameter subsystem.
pub use GidArray;
pub use ;
pub use MessageTypeInfo;
pub use ;
pub use ZBuf;
pub use Result;
/// Builds a configured object, consuming the builder.
///
/// All hiroz builders implement this trait. Bring it into scope to call `.build()`:
///
/// ```rust,ignore
/// use hiroz::Builder;
/// let ctx = ZContextBuilder::default().build()?;
/// ```
///
/// Alternatively, use `use hiroz::prelude::*;` which includes `Builder`.