flarrow_url/
node.rs

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}