1
1
use std:: sync:: Arc ;
2
2
3
+ use bittorrent_http_tracker_core:: container:: HttpTrackerCoreContainer ;
3
4
use bittorrent_tracker_core:: authentication:: handler:: KeysHandler ;
4
5
use bittorrent_tracker_core:: container:: TrackerCoreContainer ;
5
6
use bittorrent_tracker_core:: torrent:: repository:: in_memory:: InMemoryTorrentRepository ;
6
7
use bittorrent_tracker_core:: whitelist:: manager:: WhitelistManager ;
8
+ use bittorrent_udp_tracker_core:: container:: UdpTrackerCoreContainer ;
7
9
use bittorrent_udp_tracker_core:: services:: banning:: BanService ;
8
- use bittorrent_udp_tracker_core:: { self , MAX_CONNECTION_ID_ERRORS_PER_IP } ;
10
+ use bittorrent_udp_tracker_core:: { self } ;
9
11
use tokio:: sync:: RwLock ;
10
- use torrust_tracker_configuration:: { Core , HttpApi } ;
12
+ use torrust_tracker_configuration:: { Core , HttpApi , HttpTracker , UdpTracker } ;
11
13
12
- pub struct HttpApiContainer {
14
+ pub struct TrackerHttpApiCoreContainer {
13
15
// todo: replace with TrackerCoreContainer
14
16
pub core_config : Arc < Core > ,
15
17
pub in_memory_torrent_repository : Arc < InMemoryTorrentRepository > ,
@@ -26,40 +28,43 @@ pub struct HttpApiContainer {
26
28
pub http_api_config : Arc < HttpApi > ,
27
29
}
28
30
29
- impl HttpApiContainer {
31
+ impl TrackerHttpApiCoreContainer {
30
32
#[ must_use]
31
- pub fn initialize ( core_config : & Arc < Core > , http_api_config : & Arc < HttpApi > ) -> Arc < HttpApiContainer > {
33
+ pub fn initialize (
34
+ core_config : & Arc < Core > ,
35
+ http_tracker_config : & Arc < HttpTracker > ,
36
+ udp_tracker_config : & Arc < UdpTracker > ,
37
+ http_api_config : & Arc < HttpApi > ,
38
+ ) -> Arc < TrackerHttpApiCoreContainer > {
32
39
let tracker_core_container = Arc :: new ( TrackerCoreContainer :: initialize ( core_config) ) ;
33
- Self :: initialize_from ( & tracker_core_container, http_api_config)
40
+ let http_tracker_core_container = HttpTrackerCoreContainer :: initialize_from ( & tracker_core_container, http_tracker_config) ;
41
+ let udp_tracker_core_container = UdpTrackerCoreContainer :: initialize_from ( & tracker_core_container, udp_tracker_config) ;
42
+
43
+ Self :: initialize_from (
44
+ & tracker_core_container,
45
+ & http_tracker_core_container,
46
+ & udp_tracker_core_container,
47
+ http_api_config,
48
+ )
34
49
}
35
50
36
51
#[ must_use]
37
52
pub fn initialize_from (
38
53
tracker_core_container : & Arc < TrackerCoreContainer > ,
54
+ http_tracker_core_container : & Arc < HttpTrackerCoreContainer > ,
55
+ udp_tracker_core_container : & Arc < UdpTrackerCoreContainer > ,
39
56
http_api_config : & Arc < HttpApi > ,
40
- ) -> Arc < HttpApiContainer > {
41
- // HTTP stats
42
- let ( _http_stats_event_sender, http_stats_repository) =
43
- bittorrent_http_tracker_core:: statistics:: setup:: factory ( tracker_core_container. core_config . tracker_usage_statistics ) ;
44
- let http_stats_repository = Arc :: new ( http_stats_repository) ;
45
-
46
- // UDP stats
47
- let ( _udp_stats_event_sender, udp_stats_repository) =
48
- bittorrent_udp_tracker_core:: statistics:: setup:: factory ( tracker_core_container. core_config . tracker_usage_statistics ) ;
49
- let udp_stats_repository = Arc :: new ( udp_stats_repository) ;
50
-
51
- let ban_service = Arc :: new ( RwLock :: new ( BanService :: new ( MAX_CONNECTION_ID_ERRORS_PER_IP ) ) ) ;
52
-
53
- Arc :: new ( HttpApiContainer {
57
+ ) -> Arc < TrackerHttpApiCoreContainer > {
58
+ Arc :: new ( TrackerHttpApiCoreContainer {
54
59
core_config : tracker_core_container. core_config . clone ( ) ,
55
60
in_memory_torrent_repository : tracker_core_container. in_memory_torrent_repository . clone ( ) ,
56
61
keys_handler : tracker_core_container. keys_handler . clone ( ) ,
57
62
whitelist_manager : tracker_core_container. whitelist_manager . clone ( ) ,
58
63
59
- http_stats_repository : http_stats_repository. clone ( ) ,
64
+ http_stats_repository : http_tracker_core_container . http_stats_repository . clone ( ) ,
60
65
61
- ban_service : ban_service. clone ( ) ,
62
- udp_stats_repository : udp_stats_repository. clone ( ) ,
66
+ ban_service : udp_tracker_core_container . ban_service . clone ( ) ,
67
+ udp_stats_repository : udp_tracker_core_container . udp_stats_repository . clone ( ) ,
63
68
64
69
http_api_config : http_api_config. clone ( ) ,
65
70
} )
0 commit comments