@@ -4,10 +4,8 @@ use std::sync::Arc;
44
55use bittorrent_http_tracker_core:: container:: { HttpTrackerCoreContainer , HttpTrackerCoreServices } ;
66use bittorrent_tracker_core:: container:: TrackerCoreContainer ;
7- use bittorrent_udp_tracker_core:: container:: UdpTrackerCoreContainer ;
8- use bittorrent_udp_tracker_core:: services:: banning:: BanService ;
9- use bittorrent_udp_tracker_core:: { self , MAX_CONNECTION_ID_ERRORS_PER_IP } ;
10- use tokio:: sync:: RwLock ;
7+ use bittorrent_udp_tracker_core:: container:: { UdpTrackerCoreContainer , UdpTrackerCoreServices } ;
8+ use bittorrent_udp_tracker_core:: { self } ;
119use torrust_rest_tracker_api_core:: container:: TrackerHttpApiCoreContainer ;
1210use torrust_tracker_configuration:: { Configuration , HttpApi } ;
1311use torrust_udp_tracker_server:: container:: UdpTrackerServerContainer ;
@@ -26,14 +24,7 @@ pub struct AppContainer {
2624 pub tracker_core_container : Arc < TrackerCoreContainer > ,
2725 pub http_api_config : Arc < Option < HttpApi > > ,
2826 pub http_tracker_core_services : Arc < HttpTrackerCoreServices > ,
29-
30- // UDP Tracker Core Services
31- pub udp_core_stats_event_sender : Arc < Option < Box < dyn bittorrent_udp_tracker_core:: event:: sender:: Sender > > > ,
32- pub udp_core_stats_repository : Arc < bittorrent_udp_tracker_core:: statistics:: repository:: Repository > ,
33- pub udp_ban_service : Arc < RwLock < BanService > > ,
34- pub udp_connect_service : Arc < bittorrent_udp_tracker_core:: services:: connect:: ConnectService > ,
35- pub udp_announce_service : Arc < bittorrent_udp_tracker_core:: services:: announce:: AnnounceService > ,
36- pub udp_scrape_service : Arc < bittorrent_udp_tracker_core:: services:: scrape:: ScrapeService > ,
27+ pub udp_tracker_core_services : Arc < UdpTrackerCoreServices > ,
3728
3829 // UDP Tracker Server Services
3930 pub udp_server_stats_event_sender : Arc < Option < Box < dyn torrust_udp_tracker_server:: event:: sender:: Sender > > > ,
@@ -58,24 +49,7 @@ impl AppContainer {
5849
5950 let http_tracker_core_services = HttpTrackerCoreServices :: initialize_from ( & tracker_core_container) ;
6051
61- // UDP Tracker Core Services
62- let ( udp_core_stats_event_sender, udp_core_stats_repository) =
63- bittorrent_udp_tracker_core:: statistics:: setup:: factory ( configuration. core . tracker_usage_statistics ) ;
64- let udp_core_stats_event_sender = Arc :: new ( udp_core_stats_event_sender) ;
65- let udp_core_stats_repository = Arc :: new ( udp_core_stats_repository) ;
66- let udp_ban_service = Arc :: new ( RwLock :: new ( BanService :: new ( MAX_CONNECTION_ID_ERRORS_PER_IP ) ) ) ;
67- let udp_connect_service = Arc :: new ( bittorrent_udp_tracker_core:: services:: connect:: ConnectService :: new (
68- udp_core_stats_event_sender. clone ( ) ,
69- ) ) ;
70- let udp_announce_service = Arc :: new ( bittorrent_udp_tracker_core:: services:: announce:: AnnounceService :: new (
71- tracker_core_container. announce_handler . clone ( ) ,
72- tracker_core_container. whitelist_authorization . clone ( ) ,
73- udp_core_stats_event_sender. clone ( ) ,
74- ) ) ;
75- let udp_scrape_service = Arc :: new ( bittorrent_udp_tracker_core:: services:: scrape:: ScrapeService :: new (
76- tracker_core_container. scrape_handler . clone ( ) ,
77- udp_core_stats_event_sender. clone ( ) ,
78- ) ) ;
52+ let udp_tracker_core_services = UdpTrackerCoreServices :: initialize_from ( & tracker_core_container) ;
7953
8054 // UDP Tracker Server Services
8155 let ( udp_server_stats_event_sender, udp_server_stats_repository) =
@@ -114,16 +88,11 @@ impl AppContainer {
11488 for udp_tracker_config in udp_trackers {
11589 udp_tracker_containers. insert (
11690 udp_tracker_config. bind_address ,
117- Arc :: new ( UdpTrackerCoreContainer {
118- tracker_core_container : tracker_core_container. clone ( ) ,
119- udp_tracker_config : Arc :: new ( udp_tracker_config. clone ( ) ) ,
120- udp_core_stats_event_sender : udp_core_stats_event_sender. clone ( ) ,
121- udp_core_stats_repository : udp_core_stats_repository. clone ( ) ,
122- ban_service : udp_ban_service. clone ( ) ,
123- connect_service : udp_connect_service. clone ( ) ,
124- announce_service : udp_announce_service. clone ( ) ,
125- scrape_service : udp_scrape_service. clone ( ) ,
126- } ) ,
91+ UdpTrackerCoreContainer :: initialize_from_services (
92+ & tracker_core_container,
93+ & udp_tracker_core_services,
94+ & Arc :: new ( udp_tracker_config. clone ( ) ) ,
95+ ) ,
12796 ) ;
12897 }
12998 }
@@ -134,14 +103,7 @@ impl AppContainer {
134103 tracker_core_container,
135104 http_api_config,
136105 http_tracker_core_services,
137-
138- // UDP Tracker Core Services
139- udp_core_stats_event_sender,
140- udp_core_stats_repository,
141- udp_ban_service,
142- udp_connect_service,
143- udp_announce_service,
144- udp_scrape_service,
106+ udp_tracker_core_services,
145107
146108 // UDP Tracker Server Services
147109 udp_server_stats_event_sender,
@@ -188,9 +150,9 @@ impl AppContainer {
188150 TrackerHttpApiCoreContainer {
189151 tracker_core_container : self . tracker_core_container . clone ( ) ,
190152 http_api_config : http_api_config. clone ( ) ,
191- ban_service : self . udp_ban_service . clone ( ) ,
153+ ban_service : self . udp_tracker_core_services . udp_ban_service . clone ( ) ,
192154 http_stats_repository : self . http_tracker_core_services . http_stats_repository . clone ( ) ,
193- udp_core_stats_repository : self . udp_core_stats_repository . clone ( ) ,
155+ udp_core_stats_repository : self . udp_tracker_core_services . udp_core_stats_repository . clone ( ) ,
194156 udp_server_stats_repository : self . udp_server_stats_repository . clone ( ) ,
195157 }
196158 . into ( )
0 commit comments