1use libloading::Library;
2
3use crate::prelude::*;
4
5pub struct DynamicallyLinkedNode {
6 pub handle: Box<dyn Node>,
7 pub _library: Library,
8}
9
10pub enum RuntimeNode {
11 StaticallyLinked(Box<dyn Node>),
12 DynamicallyLinked(DynamicallyLinkedNode),
13}
14
15impl RuntimeNode {
16 pub async fn run(self) -> Result<()> {
17 match self {
18 RuntimeNode::StaticallyLinked(node) => node
19 .start()
20 .await
21 .wrap_err("Failed to await statically linked node")?,
22 RuntimeNode::DynamicallyLinked(node) => node
23 .handle
24 .start()
25 .await
26 .wrap_err("Failed to await dynamically linked node")?,
27 }
28 }
29}