1
1
use std:: collections:: HashMap ;
2
+ use std:: net:: SocketAddr ;
2
3
use std:: sync:: Arc ;
3
4
5
+ use parse_display:: Display ;
4
6
use tokio:: sync:: broadcast;
5
7
use tokio:: sync:: RwLock ;
6
8
@@ -28,10 +30,25 @@ pub trait Message: Sized {
28
30
#[ derive( Clone ) ]
29
31
pub struct Global ( Arc < RwLock < GlobalData > > ) ;
30
32
33
+ #[ derive( Display , Debug ) ]
34
+ pub enum InputSourceName {
35
+ #[ display( "FlatBuffers({peer_addr}): {origin}" ) ]
36
+ FlatBuffers {
37
+ peer_addr : SocketAddr ,
38
+ origin : String ,
39
+ } ,
40
+ #[ display( "JSON({peer_addr})" ) ]
41
+ Json { peer_addr : SocketAddr } ,
42
+ #[ display( "Protobuf({peer_addr})" ) ]
43
+ Protobuf { peer_addr : SocketAddr } ,
44
+ #[ display( "PriorityMuxer" ) ]
45
+ PriorityMuxer ,
46
+ }
47
+
31
48
impl Global {
32
49
pub async fn register_input_source (
33
50
& self ,
34
- name : String ,
51
+ name : InputSourceName ,
35
52
priority : Option < i32 > ,
36
53
) -> Result < InputSourceHandle < InputMessage > , InputSourceError > {
37
54
let priority = if let Some ( priority) = priority {
@@ -53,7 +70,7 @@ impl Global {
53
70
54
71
pub async fn register_muxed_source (
55
72
& self ,
56
- name : String ,
73
+ name : InputSourceName ,
57
74
) -> Result < InputSourceHandle < MuxedMessage > , InputSourceError > {
58
75
Ok ( InputSourceHandle {
59
76
input_source : self . 0 . write ( ) . await . register_muxed_source ( name) ,
@@ -107,7 +124,7 @@ impl GlobalData {
107
124
108
125
fn register_input_source (
109
126
& mut self ,
110
- name : String ,
127
+ name : InputSourceName ,
111
128
priority : Option < i32 > ,
112
129
) -> Arc < InputSource < InputMessage > > {
113
130
let id = self . next_input_source_id ;
@@ -133,7 +150,7 @@ impl GlobalData {
133
150
}
134
151
}
135
152
136
- fn register_muxed_source ( & mut self , name : String ) -> Arc < InputSource < MuxedMessage > > {
153
+ fn register_muxed_source ( & mut self , name : InputSourceName ) -> Arc < InputSource < MuxedMessage > > {
137
154
let id = self . next_muxed_source_id ;
138
155
self . next_muxed_source_id += 1 ;
139
156
0 commit comments