@@ -31,6 +31,8 @@ use tracing::instrument;
3131
3232use super :: make_rust_tls;
3333use crate :: core;
34+ use crate :: core:: statistics:: event:: sender:: Sender ;
35+ use crate :: core:: statistics:: repository:: Repository ;
3436use crate :: servers:: apis:: server:: { ApiServer , Launcher } ;
3537use crate :: servers:: apis:: Version ;
3638use crate :: servers:: registar:: ServiceRegistrationForm ;
@@ -56,11 +58,13 @@ pub struct ApiServerJobStarted();
5658/// It would panic if unable to send the `ApiServerJobStarted` notice.
5759///
5860///
59- #[ instrument( skip( config, tracker, ban_service, form) ) ]
61+ #[ instrument( skip( config, tracker, ban_service, stats_event_sender , stats_repository , form) ) ]
6062pub async fn start_job (
6163 config : & HttpApi ,
6264 tracker : Arc < core:: Tracker > ,
6365 ban_service : Arc < RwLock < BanService > > ,
66+ stats_event_sender : Arc < Option < Box < dyn Sender > > > ,
67+ stats_repository : Arc < Repository > ,
6468 form : ServiceRegistrationForm ,
6569 version : Version ,
6670) -> Option < JoinHandle < ( ) > > {
@@ -73,22 +77,53 @@ pub async fn start_job(
7377 let access_tokens = Arc :: new ( config. access_tokens . clone ( ) ) ;
7478
7579 match version {
76- Version :: V1 => Some ( start_v1 ( bind_to, tls, tracker. clone ( ) , ban_service. clone ( ) , form, access_tokens) . await ) ,
80+ Version :: V1 => Some (
81+ start_v1 (
82+ bind_to,
83+ tls,
84+ tracker. clone ( ) ,
85+ ban_service. clone ( ) ,
86+ stats_event_sender. clone ( ) ,
87+ stats_repository. clone ( ) ,
88+ form,
89+ access_tokens,
90+ )
91+ . await ,
92+ ) ,
7793 }
7894}
7995
8096#[ allow( clippy:: async_yields_async) ]
81- #[ instrument( skip( socket, tls, tracker, ban_service, form, access_tokens) ) ]
97+ #[ allow( clippy:: too_many_arguments) ]
98+ #[ instrument( skip(
99+ socket,
100+ tls,
101+ tracker,
102+ ban_service,
103+ stats_event_sender,
104+ stats_repository,
105+ form,
106+ access_tokens
107+ ) ) ]
82108async fn start_v1 (
83109 socket : SocketAddr ,
84110 tls : Option < RustlsConfig > ,
85111 tracker : Arc < core:: Tracker > ,
86112 ban_service : Arc < RwLock < BanService > > ,
113+ stats_event_sender : Arc < Option < Box < dyn Sender > > > ,
114+ stats_repository : Arc < Repository > ,
87115 form : ServiceRegistrationForm ,
88116 access_tokens : Arc < AccessTokens > ,
89117) -> JoinHandle < ( ) > {
90118 let server = ApiServer :: new ( Launcher :: new ( socket, tls) )
91- . start ( tracker, ban_service, form, access_tokens)
119+ . start (
120+ tracker,
121+ stats_event_sender,
122+ stats_repository,
123+ ban_service,
124+ form,
125+ access_tokens,
126+ )
92127 . await
93128 . expect ( "it should be able to start to the tracker api" ) ;
94129
@@ -107,6 +142,7 @@ mod tests {
107142
108143 use crate :: bootstrap:: app:: initialize_with_configuration;
109144 use crate :: bootstrap:: jobs:: tracker_apis:: start_job;
145+ use crate :: core:: services:: statistics;
110146 use crate :: servers:: apis:: Version ;
111147 use crate :: servers:: registar:: Registar ;
112148 use crate :: servers:: udp:: server:: banning:: BanService ;
@@ -116,12 +152,26 @@ mod tests {
116152 async fn it_should_start_http_tracker ( ) {
117153 let cfg = Arc :: new ( ephemeral_public ( ) ) ;
118154 let config = & cfg. http_api . clone ( ) . unwrap ( ) ;
119- let tracker = initialize_with_configuration ( & cfg ) ;
155+
120156 let ban_service = Arc :: new ( RwLock :: new ( BanService :: new ( MAX_CONNECTION_ID_ERRORS_PER_IP ) ) ) ;
157+ let ( stats_event_sender, stats_repository) = statistics:: setup:: factory ( cfg. core . tracker_usage_statistics ) ;
158+ let stats_event_sender = Arc :: new ( stats_event_sender) ;
159+ let stats_repository = Arc :: new ( stats_repository) ;
160+
161+ let tracker = initialize_with_configuration ( & cfg) ;
162+
121163 let version = Version :: V1 ;
122164
123- start_job ( config, tracker, ban_service, Registar :: default ( ) . give_form ( ) , version)
124- . await
125- . expect ( "it should be able to join to the tracker api start-job" ) ;
165+ start_job (
166+ config,
167+ tracker,
168+ ban_service,
169+ stats_event_sender,
170+ stats_repository,
171+ Registar :: default ( ) . give_form ( ) ,
172+ version,
173+ )
174+ . await
175+ . expect ( "it should be able to join to the tracker api start-job" ) ;
126176 }
127177}
0 commit comments