grapl_graph_descriptions/
lib.rs1use 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}