@@ -54,45 +54,20 @@ impl AppContainer {
5454
5555 let http_tracker_core_services = HttpTrackerCoreServices :: initialize_from ( & tracker_core_container) ;
5656
57- let mut http_tracker_instance_containers = HashMap :: new ( ) ;
58-
59- if let Some ( http_trackers) = & configuration. http_trackers {
60- for http_tracker_config in http_trackers {
61- http_tracker_instance_containers. insert (
62- http_tracker_config. bind_address ,
63- HttpTrackerCoreContainer :: initialize_from_services (
64- & tracker_core_container,
65- & http_tracker_core_services,
66- & Arc :: new ( http_tracker_config. clone ( ) ) ,
67- ) ,
68- ) ;
69- }
70- }
71-
72- let http_tracker_instance_containers = Arc :: new ( http_tracker_instance_containers) ;
57+ let http_tracker_instance_containers = Self :: initialize_http_tracker_instance_containers (
58+ configuration,
59+ & tracker_core_container,
60+ & http_tracker_core_services,
61+ ) ;
7362
7463 // UDP
7564
7665 let udp_tracker_core_services = UdpTrackerCoreServices :: initialize_from ( & tracker_core_container) ;
7766
7867 let udp_tracker_server_container = UdpTrackerServerContainer :: initialize ( & core_config) ;
7968
80- let mut udp_tracker_instance_containers = HashMap :: new ( ) ;
81-
82- if let Some ( udp_trackers) = & configuration. udp_trackers {
83- for udp_tracker_config in udp_trackers {
84- udp_tracker_instance_containers. insert (
85- udp_tracker_config. bind_address ,
86- UdpTrackerCoreContainer :: initialize_from_services (
87- & tracker_core_container,
88- & udp_tracker_core_services,
89- & Arc :: new ( udp_tracker_config. clone ( ) ) ,
90- ) ,
91- ) ;
92- }
93- }
94-
95- let udp_tracker_instance_containers = Arc :: new ( udp_tracker_instance_containers) ;
69+ let udp_tracker_instance_containers =
70+ Self :: initialize_udp_tracker_instance_containers ( configuration, & tracker_core_container, & udp_tracker_core_services) ;
9671
9772 AppContainer {
9873 // Configuration
@@ -151,4 +126,52 @@ impl AppContainer {
151126 }
152127 . into ( )
153128 }
129+
130+ #[ must_use]
131+ fn initialize_http_tracker_instance_containers (
132+ configuration : & Configuration ,
133+ tracker_core_container : & Arc < TrackerCoreContainer > ,
134+ http_tracker_core_services : & Arc < HttpTrackerCoreServices > ,
135+ ) -> Arc < HashMap < SocketAddr , Arc < HttpTrackerCoreContainer > > > {
136+ let mut http_tracker_instance_containers = HashMap :: new ( ) ;
137+
138+ if let Some ( http_trackers) = & configuration. http_trackers {
139+ for http_tracker_config in http_trackers {
140+ http_tracker_instance_containers. insert (
141+ http_tracker_config. bind_address ,
142+ HttpTrackerCoreContainer :: initialize_from_services (
143+ tracker_core_container,
144+ http_tracker_core_services,
145+ & Arc :: new ( http_tracker_config. clone ( ) ) ,
146+ ) ,
147+ ) ;
148+ }
149+ }
150+
151+ Arc :: new ( http_tracker_instance_containers)
152+ }
153+
154+ #[ must_use]
155+ fn initialize_udp_tracker_instance_containers (
156+ configuration : & Configuration ,
157+ tracker_core_container : & Arc < TrackerCoreContainer > ,
158+ udp_tracker_core_services : & Arc < UdpTrackerCoreServices > ,
159+ ) -> Arc < HashMap < SocketAddr , Arc < UdpTrackerCoreContainer > > > {
160+ let mut udp_tracker_instance_containers = HashMap :: new ( ) ;
161+
162+ if let Some ( udp_trackers) = & configuration. udp_trackers {
163+ for udp_tracker_config in udp_trackers {
164+ udp_tracker_instance_containers. insert (
165+ udp_tracker_config. bind_address ,
166+ UdpTrackerCoreContainer :: initialize_from_services (
167+ tracker_core_container,
168+ udp_tracker_core_services,
169+ & Arc :: new ( udp_tracker_config. clone ( ) ) ,
170+ ) ,
171+ ) ;
172+ }
173+ }
174+
175+ Arc :: new ( udp_tracker_instance_containers)
176+ }
154177}
0 commit comments