@@ -2,9 +2,7 @@ use std::collections::HashMap;
22use std:: net:: SocketAddr ;
33use std:: sync:: Arc ;
44
5- use bittorrent_http_tracker_core:: container:: HttpTrackerCoreContainer ;
6- use bittorrent_http_tracker_core:: services:: announce:: AnnounceService ;
7- use bittorrent_http_tracker_core:: services:: scrape:: ScrapeService ;
5+ use bittorrent_http_tracker_core:: container:: { HttpTrackerCoreContainer , HttpTrackerCoreServices } ;
86use bittorrent_tracker_core:: container:: TrackerCoreContainer ;
97use bittorrent_udp_tracker_core:: container:: UdpTrackerCoreContainer ;
108use bittorrent_udp_tracker_core:: services:: banning:: BanService ;
@@ -27,6 +25,7 @@ pub enum Error {
2725pub struct AppContainer {
2826 pub tracker_core_container : Arc < TrackerCoreContainer > ,
2927 pub http_api_config : Arc < Option < HttpApi > > ,
28+ pub http_tracker_core_services : Arc < HttpTrackerCoreServices > ,
3029
3130 // UDP Tracker Core Services
3231 pub udp_core_stats_event_sender : Arc < Option < Box < dyn bittorrent_udp_tracker_core:: event:: sender:: Sender > > > ,
@@ -36,12 +35,6 @@ pub struct AppContainer {
3635 pub udp_announce_service : Arc < bittorrent_udp_tracker_core:: services:: announce:: AnnounceService > ,
3736 pub udp_scrape_service : Arc < bittorrent_udp_tracker_core:: services:: scrape:: ScrapeService > ,
3837
39- // HTTP Tracker Core Services
40- pub http_stats_event_sender : Arc < Option < Box < dyn bittorrent_http_tracker_core:: event:: sender:: Sender > > > ,
41- pub http_stats_repository : Arc < bittorrent_http_tracker_core:: statistics:: repository:: Repository > ,
42- pub http_announce_service : Arc < bittorrent_http_tracker_core:: services:: announce:: AnnounceService > ,
43- pub http_scrape_service : Arc < bittorrent_http_tracker_core:: services:: scrape:: ScrapeService > ,
44-
4538 // UDP Tracker Server Services
4639 pub udp_server_stats_event_sender : Arc < Option < Box < dyn torrust_udp_tracker_server:: event:: sender:: Sender > > > ,
4740 pub udp_server_stats_repository : Arc < torrust_udp_tracker_server:: statistics:: repository:: Repository > ,
@@ -63,24 +56,7 @@ impl AppContainer {
6356
6457 let tracker_core_container = Arc :: new ( TrackerCoreContainer :: initialize ( & core_config) ) ;
6558
66- // HTTP Tracker Core Services
67- let ( http_stats_event_sender, http_stats_repository) =
68- bittorrent_http_tracker_core:: statistics:: setup:: factory ( configuration. core . tracker_usage_statistics ) ;
69- let http_stats_event_sender = Arc :: new ( http_stats_event_sender) ;
70- let http_stats_repository = Arc :: new ( http_stats_repository) ;
71- let http_announce_service = Arc :: new ( AnnounceService :: new (
72- tracker_core_container. core_config . clone ( ) ,
73- tracker_core_container. announce_handler . clone ( ) ,
74- tracker_core_container. authentication_service . clone ( ) ,
75- tracker_core_container. whitelist_authorization . clone ( ) ,
76- http_stats_event_sender. clone ( ) ,
77- ) ) ;
78- let http_scrape_service = Arc :: new ( ScrapeService :: new (
79- tracker_core_container. core_config . clone ( ) ,
80- tracker_core_container. scrape_handler . clone ( ) ,
81- tracker_core_container. authentication_service . clone ( ) ,
82- http_stats_event_sender. clone ( ) ,
83- ) ) ;
59+ let http_tracker_core_services = HttpTrackerCoreServices :: initialize_from ( & tracker_core_container) ;
8460
8561 // UDP Tracker Core Services
8662 let ( udp_core_stats_event_sender, udp_core_stats_repository) =
@@ -121,14 +97,11 @@ impl AppContainer {
12197 for http_tracker_config in http_trackers {
12298 http_tracker_containers. insert (
12399 http_tracker_config. bind_address ,
124- Arc :: new ( HttpTrackerCoreContainer {
125- tracker_core_container : tracker_core_container. clone ( ) ,
126- http_tracker_config : Arc :: new ( http_tracker_config. clone ( ) ) ,
127- http_stats_event_sender : http_stats_event_sender. clone ( ) ,
128- http_stats_repository : http_stats_repository. clone ( ) ,
129- announce_service : http_announce_service. clone ( ) ,
130- scrape_service : http_scrape_service. clone ( ) ,
131- } ) ,
100+ HttpTrackerCoreContainer :: initialize_from_services (
101+ & tracker_core_container,
102+ & http_tracker_core_services,
103+ & Arc :: new ( http_tracker_config. clone ( ) ) ,
104+ ) ,
132105 ) ;
133106 }
134107 }
@@ -160,6 +133,7 @@ impl AppContainer {
160133 AppContainer {
161134 tracker_core_container,
162135 http_api_config,
136+ http_tracker_core_services,
163137
164138 // UDP Tracker Core Services
165139 udp_core_stats_event_sender,
@@ -169,12 +143,6 @@ impl AppContainer {
169143 udp_announce_service,
170144 udp_scrape_service,
171145
172- // HTTP Tracker Core Services
173- http_stats_event_sender,
174- http_stats_repository,
175- http_announce_service,
176- http_scrape_service,
177-
178146 // UDP Tracker Server Services
179147 udp_server_stats_event_sender,
180148 udp_server_stats_repository,
@@ -221,7 +189,7 @@ impl AppContainer {
221189 tracker_core_container : self . tracker_core_container . clone ( ) ,
222190 http_api_config : http_api_config. clone ( ) ,
223191 ban_service : self . udp_ban_service . clone ( ) ,
224- http_stats_repository : self . http_stats_repository . clone ( ) ,
192+ http_stats_repository : self . http_tracker_core_services . http_stats_repository . clone ( ) ,
225193 udp_core_stats_repository : self . udp_core_stats_repository . clone ( ) ,
226194 udp_server_stats_repository : self . udp_server_stats_repository . clone ( ) ,
227195 }
0 commit comments