1010
1111use std:: collections:: HashMap ;
1212use std:: pin:: Pin ;
13- use std:: sync:: Mutex ;
13+ use std:: sync:: RwLock ;
1414use std:: task:: { Context , Poll } ;
1515use std:: time:: Duration ;
1616
@@ -65,9 +65,9 @@ async fn index() -> impl Responder {
6565}
6666
6767#[ get( "/events/{channel}" ) ]
68- async fn new_client ( channel : Path < String > , broadcasters : Data < Mutex < BroadcasterMap > > ) -> impl Responder {
68+ async fn new_client ( channel : Path < String > , broadcasters : Data < RwLock < BroadcasterMap > > ) -> impl Responder {
6969
70- let rx = broadcasters. lock ( ) . unwrap ( ) . new_client ( & channel. into_inner ( ) ) ;
70+ let rx = broadcasters. write ( ) . unwrap ( ) . new_client ( & channel. into_inner ( ) ) ;
7171
7272 HttpResponse :: Ok ( )
7373 . header ( "content-type" , "text/event-stream" )
@@ -78,13 +78,13 @@ async fn new_client(channel: Path<String>, broadcasters: Data<Mutex<BroadcasterM
7878#[ post( "/broadcast" ) ]
7979async fn broadcast (
8080 data : web:: Json < SpotifyData > ,
81- broadcasters : Data < Mutex < BroadcasterMap > > ,
81+ broadcasters : Data < RwLock < BroadcasterMap > > ,
8282) -> impl Responder {
8383
8484 let channel = & data. channel ;
8585 let msg = & data. msg ;
8686
87- broadcasters. lock ( ) . unwrap ( ) . broadcast ( & channel, & msg) ;
87+ broadcasters. read ( ) . unwrap ( ) . broadcast ( & channel, & msg) ;
8888 HttpResponse :: Ok ( )
8989 . body ( "idk if it sent or not" )
9090}
@@ -126,8 +126,8 @@ impl BroadcasterMap {
126126 }
127127 }
128128
129- fn create ( ) -> Data < Mutex < Self > > {
130- Data :: new ( Mutex :: new ( BroadcasterMap :: new ( ) ) )
129+ fn create ( ) -> Data < RwLock < Self > > {
130+ Data :: new ( RwLock :: new ( BroadcasterMap :: new ( ) ) )
131131 }
132132
133133 fn spawn_ping ( tx : Sender < Bytes > ) {
0 commit comments