1
- use cirru_edn:: Edn ;
1
+ use cirru_edn:: { Edn , EdnTupleView } ;
2
2
use lazy_static:: lazy_static;
3
3
use simple_websockets:: { Event , Message , Responder } ;
4
4
use std:: collections:: HashMap ;
@@ -21,7 +21,7 @@ pub fn wss_serve(
21
21
_finish : Box < dyn FnOnce ( ) > ,
22
22
) -> Result < Edn , String > {
23
23
let port = match args. first ( ) {
24
- Some ( Edn :: Map ( m) ) => match m. get ( & Edn :: tag ( "port" ) ) {
24
+ Some ( Edn :: Map ( m) ) => match m. get ( "port" ) {
25
25
Some ( Edn :: Number ( n) ) => n. floor ( ) . round ( ) as u16 ,
26
26
Some ( a) => return Err ( format ! ( "Unknown port: {}" , a) ) ,
27
27
None => 9001 ,
@@ -44,7 +44,10 @@ pub fn wss_serve(
44
44
let mut clients = CLIENTS . write ( ) . unwrap ( ) ;
45
45
clients. insert ( client_id, responder) ;
46
46
}
47
- if let Err ( e) = handler ( vec ! [ Edn :: Tuple ( Arc :: new( Edn :: tag( "connect" ) ) , vec![ Edn :: Number ( client_id as f64 ) ] ) ] ) {
47
+ if let Err ( e) = handler ( vec ! [ Edn :: Tuple ( EdnTupleView {
48
+ tag: Arc :: new( Edn :: tag( "connect" ) ) ,
49
+ extra: vec![ Edn :: Number ( client_id as f64 ) ] ,
50
+ } ) ] ) {
48
51
println ! ( "Failed to handle connect: {}" , e)
49
52
}
50
53
}
@@ -54,27 +57,27 @@ pub fn wss_serve(
54
57
let mut clients = CLIENTS . write ( ) . unwrap ( ) ;
55
58
clients. remove ( & client_id) ;
56
59
}
57
- if let Err ( e) = handler ( vec ! [ Edn :: Tuple (
58
- Arc :: new( Edn :: tag( "disconnect" ) ) ,
59
- vec![ Edn :: Number ( client_id as f64 ) ] ,
60
- ) ] ) {
60
+ if let Err ( e) = handler ( vec ! [ Edn :: Tuple ( EdnTupleView {
61
+ tag : Arc :: new( Edn :: tag( "disconnect" ) ) ,
62
+ extra : vec![ Edn :: Number ( client_id as f64 ) ] ,
63
+ } ) ] ) {
61
64
println ! ( "Failed to handle disconnect: {}" , e)
62
65
}
63
66
}
64
67
Event :: Message ( client_id, message) => match message {
65
68
Message :: Text ( s) => {
66
- if let Err ( e) = handler ( vec ! [ Edn :: Tuple (
67
- Arc :: new( Edn :: tag( "message" ) ) ,
68
- vec![ Edn :: Number ( client_id as f64 ) , Edn :: Str ( s. into( ) ) ] ,
69
- ) ] ) {
69
+ if let Err ( e) = handler ( vec ! [ Edn :: Tuple ( EdnTupleView {
70
+ tag : Arc :: new( Edn :: tag( "message" ) ) ,
71
+ extra : vec![ Edn :: Number ( client_id as f64 ) , Edn :: Str ( s. into( ) ) ] ,
72
+ } ) ] ) {
70
73
println ! ( "Failed to handle text message: {}" , e)
71
74
}
72
75
}
73
76
Message :: Binary ( buf) => {
74
- if let Err ( e) = handler ( vec ! [ Edn :: Tuple (
75
- Arc :: new( Edn :: tag( "blob" ) ) ,
76
- vec![ Edn :: Number ( client_id as f64 ) , Edn :: Buffer ( buf) ] ,
77
- ) ] ) {
77
+ if let Err ( e) = handler ( vec ! [ Edn :: Tuple ( EdnTupleView {
78
+ tag : Arc :: new( Edn :: tag( "blob" ) ) ,
79
+ extra : vec![ Edn :: Number ( client_id as f64 ) , Edn :: Buffer ( buf) ] ,
80
+ } ) ] ) {
78
81
println ! ( "Failed to handle binary message: {}" , e)
79
82
}
80
83
}
0 commit comments