|
14 | 14 | use clap::{App, Arg};
|
15 | 15 | use std::str::FromStr;
|
16 | 16 | use zenoh::config::{Config, ModeDependentValue};
|
| 17 | +use zenoh::plugins::PluginsManager; |
17 | 18 | use zenoh::prelude::r#async::*;
|
| 19 | +use zenoh::runtime::RuntimeBuilder; |
18 | 20 | use zenoh_plugin_trait::Plugin;
|
19 | 21 |
|
20 | 22 | macro_rules! insert_json5 {
|
@@ -200,9 +202,35 @@ async fn main() {
|
200 | 202 | );
|
201 | 203 |
|
202 | 204 | let config = parse_args();
|
| 205 | + tracing::info!("Zenoh {config:?}"); |
203 | 206 |
|
204 |
| - // create a zenoh session. Plugins are loaded by the open. |
205 |
| - let _session = zenoh::open(config).res().await.unwrap(); |
| 207 | + let mut plugins_mgr = PluginsManager::static_plugins_only(); |
| 208 | + |
| 209 | + // declare REST plugin if specified in conf |
| 210 | + if config.plugin("rest").is_some() { |
| 211 | + plugins_mgr = plugins_mgr.declare_static_plugin::<zenoh_plugin_rest::RestPlugin>(true); |
| 212 | + } |
| 213 | + |
| 214 | + // declare ROS2DDS plugin |
| 215 | + plugins_mgr = plugins_mgr.declare_static_plugin::<zenoh_plugin_mqtt::MqttPlugin>(true); |
| 216 | + |
| 217 | + // create a zenoh Runtime. |
| 218 | + let runtime = match RuntimeBuilder::new(config) |
| 219 | + .plugins_manager(plugins_mgr) |
| 220 | + .build() |
| 221 | + .await |
| 222 | + { |
| 223 | + Ok(runtime) => runtime, |
| 224 | + Err(e) => { |
| 225 | + println!("{e}. Exiting..."); |
| 226 | + std::process::exit(-1); |
| 227 | + } |
| 228 | + }; |
| 229 | + // create a zenoh Session. |
| 230 | + let _session = zenoh::init(runtime).res().await.unwrap_or_else(|e| { |
| 231 | + println!("{e}. Exiting..."); |
| 232 | + std::process::exit(-1); |
| 233 | + }); |
206 | 234 |
|
207 | 235 | async_std::future::pending::<()>().await;
|
208 | 236 | }
|
0 commit comments