@@ -4,7 +4,8 @@ pub mod configuration;
4
4
pub mod domain;
5
5
pub mod rpc;
6
6
7
- use actix_web:: web:: Data ;
7
+ use std:: sync:: Arc ;
8
+
8
9
use api:: middlewares:: initialize_telemetry;
9
10
use components:: init_components;
10
11
use env_logger:: init as initialize_logger;
@@ -15,33 +16,30 @@ pub async fn run_app() {
15
16
initialize_telemetry ( ) ;
16
17
17
18
let ( config, db, redis_events_queue, redis_quests_channel) = init_components ( ) . await ;
18
-
19
- // Need to be a Data type for Actix. When it's a Data type, it's an Arc too.
20
- // So this let us to reuse the Arc instead of having a Data<Arc<Arc<T>>>
21
- // and then we can do the `into_inner()` to get the Arc that Data created.
22
- let config_arc = Data :: new ( config) ;
23
- let db_arc = Data :: new ( db) ;
24
- let redis_events_queue_arc = Data :: new ( redis_events_queue) ;
25
-
26
- let actix_rest_api_server = api:: run_server ( (
27
- config_arc. clone ( ) ,
28
- db_arc. clone ( ) ,
29
- redis_events_queue_arc. clone ( ) ,
30
- ) )
31
- . await ;
19
+ let ( config, db, redis_events_queue) =
20
+ ( Arc :: new ( config) , Arc :: new ( db) , Arc :: new ( redis_events_queue) ) ;
32
21
33
22
let ( warp_websocket_server, rpc_server) = rpc:: run_rpc_server ( (
34
- config_arc . into_inner ( ) ,
35
- db_arc . into_inner ( ) ,
36
- redis_events_queue_arc . into_inner ( ) ,
23
+ config . clone ( ) ,
24
+ db . clone ( ) ,
25
+ redis_events_queue . clone ( ) ,
37
26
redis_quests_channel,
38
27
) )
39
28
. await ;
40
29
30
+ let actix_rest_api_server =
31
+ api:: run_server ( ( config. into ( ) , db. into ( ) , redis_events_queue. into ( ) ) ) . await ;
32
+
41
33
select ! {
42
- _ = actix_rest_api_server => { } ,
43
- _ = warp_websocket_server => { } ,
44
- _ = rpc_server => { } ,
34
+ _ = actix_rest_api_server => {
35
+ log:: info!( "> run_app > REST API finished. Exiting..." ) ;
36
+ } ,
37
+ _ = warp_websocket_server => {
38
+ log:: info!( "> run_app > Warp server finished. Exiting..." ) ;
39
+ } ,
40
+ _ = rpc_server => {
41
+ log:: info!( "> run_app > RPC Server finished. Exiting..." ) ;
42
+ } ,
45
43
_ = signal:: ctrl_c( ) => {
46
44
log:: info!( "> run_app > SIGINT catched. Exiting..." ) ;
47
45
}
0 commit comments