grapl_graph_descriptions/
lib.rs

1use std::panic;
2
3use crate::graph_description::*;
4pub mod graph_description {
5    use derive_builder::*;
6
7    include!(concat!(env!("OUT_DIR"), "/graph_description.rs"));
8}
9
10pub mod asset;
11pub mod dynamic_node;
12pub mod error;
13pub mod file;
14pub mod graph;
15pub mod ip_address;
16pub mod ip_connection;
17pub mod ip_port;
18pub mod network_connection;
19pub mod node;
20pub mod process;
21pub mod process_inbound_connection;
22pub mod process_outbound_connection;
23
24impl From<Static> for IdStrategy {
25    fn from(strategy: Static) -> IdStrategy {
26        IdStrategy {
27            strategy: Some(id_strategy::Strategy::Static(strategy)),
28        }
29    }
30}
31
32impl From<Session> for IdStrategy {
33    fn from(strategy: Session) -> IdStrategy {
34        IdStrategy {
35            strategy: Some(id_strategy::Strategy::Session(strategy)),
36        }
37    }
38}
39
40impl From<String> for NodeProperty {
41    fn from(s: String) -> NodeProperty {
42        NodeProperty {
43            property: Some(node_property::Property::Strprop(s)),
44        }
45    }
46}
47
48impl From<i64> for NodeProperty {
49    fn from(i: i64) -> NodeProperty {
50        NodeProperty {
51            property: Some(node_property::Property::Intprop(i)),
52        }
53    }
54}
55
56impl From<u64> for NodeProperty {
57    fn from(i: u64) -> NodeProperty {
58        NodeProperty {
59            property: Some(node_property::Property::Uintprop(i)),
60        }
61    }
62}
63
64impl std::string::ToString for NodeProperty {
65    fn to_string(&self) -> String {
66        let prop = match &self.property {
67            Some(node_property::Property::Intprop(i)) => i.to_string(),
68            Some(node_property::Property::Uintprop(i)) => i.to_string(),
69            Some(node_property::Property::Strprop(s)) => s.to_string(),
70            None => panic!("Invalid property : {:?}", self),
71        };
72        prop
73    }
74}
75
76impl NodeProperty {
77    pub fn as_str_prop(&self) -> Option<&str> {
78        match &self.property {
79            Some(node_property::Property::Strprop(s)) => Some(s),
80            _ => None,
81        }
82    }
83
84    pub fn as_uint_prop(&self) -> Option<u64> {
85        match &self.property {
86            Some(node_property::Property::Uintprop(s)) => Some(*s),
87            _ => None,
88        }
89    }
90
91    pub fn as_int_prop(&self) -> Option<i64> {
92        match &self.property {
93            Some(node_property::Property::Intprop(s)) => Some(*s),
94            _ => None,
95        }
96    }
97}