Skip to content

Commit 9cee15e

Browse files
committed
refactor: encapsule fiel in AppContainer for TrackerCoreContainer
1 parent c7297c1 commit 9cee15e

2 files changed

Lines changed: 23 additions & 53 deletions

File tree

src/app.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ pub async fn start(config: &Configuration, app_container: &Arc<AppContainer>) ->
5353
// Load peer keys
5454
if config.core.private {
5555
app_container
56+
.tracker_core_container
5657
.keys_handler
5758
.load_peer_keys_from_database()
5859
.await
@@ -62,6 +63,7 @@ pub async fn start(config: &Configuration, app_container: &Arc<AppContainer>) ->
6263
// Load whitelisted torrents
6364
if config.core.listed {
6465
app_container
66+
.tracker_core_container
6567
.whitelist_manager
6668
.load_whitelist_from_database()
6769
.await
@@ -130,7 +132,10 @@ pub async fn start(config: &Configuration, app_container: &Arc<AppContainer>) ->
130132

131133
// Start runners to remove torrents without peers, every interval
132134
if config.core.inactive_peer_cleanup_interval > 0 {
133-
jobs.push(torrent_cleanup::start_job(&config.core, &app_container.torrents_manager));
135+
jobs.push(torrent_cleanup::start_job(
136+
&config.core,
137+
&app_container.tracker_core_container.torrents_manager,
138+
));
134139
}
135140

136141
// Start Health Check API

src/container.rs

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,20 @@ use std::sync::Arc;
33
use bittorrent_http_tracker_core::container::HttpTrackerCoreContainer;
44
use bittorrent_http_tracker_core::services::announce::AnnounceService;
55
use bittorrent_http_tracker_core::services::scrape::ScrapeService;
6-
use bittorrent_tracker_core::announce_handler::AnnounceHandler;
7-
use bittorrent_tracker_core::authentication::handler::KeysHandler;
8-
use bittorrent_tracker_core::authentication::service::AuthenticationService;
96
use bittorrent_tracker_core::container::TrackerCoreContainer;
10-
use bittorrent_tracker_core::databases::Database;
11-
use bittorrent_tracker_core::scrape_handler::ScrapeHandler;
12-
use bittorrent_tracker_core::torrent::manager::TorrentsManager;
13-
use bittorrent_tracker_core::torrent::repository::in_memory::InMemoryTorrentRepository;
14-
use bittorrent_tracker_core::torrent::repository::persisted::DatabasePersistentTorrentRepository;
15-
use bittorrent_tracker_core::whitelist;
16-
use bittorrent_tracker_core::whitelist::manager::WhitelistManager;
17-
use bittorrent_tracker_core::whitelist::repository::in_memory::InMemoryWhitelist;
187
use bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer;
198
use bittorrent_udp_tracker_core::services::banning::BanService;
209
use bittorrent_udp_tracker_core::{self, MAX_CONNECTION_ID_ERRORS_PER_IP};
2110
use tokio::sync::RwLock;
2211
use torrust_rest_tracker_api_core::container::TrackerHttpApiCoreContainer;
23-
use torrust_tracker_configuration::{Configuration, Core, HttpApi, HttpTracker, UdpTracker};
12+
use torrust_tracker_configuration::{Configuration, HttpApi, HttpTracker, UdpTracker};
2413
use torrust_udp_tracker_server::container::UdpTrackerServerContainer;
2514
use tracing::instrument;
2615

2716
/* todo: remove duplicate code.
2817
2918
Use containers from packages as AppContainer fields:
3019
31-
- bittorrent_tracker_core::container::TrackerCoreContainer
3220
- bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer
3321
- bittorrent_http_tracker_core::container::HttpTrackerCoreContainer
3422
- torrust_udp_tracker_server::container::UdpTrackerServerContainer
@@ -37,19 +25,7 @@ use tracing::instrument;
3725
*/
3826

3927
pub struct AppContainer {
40-
// Tracker Core Services
41-
pub core_config: Arc<Core>,
42-
pub database: Arc<Box<dyn Database>>,
43-
pub announce_handler: Arc<AnnounceHandler>,
44-
pub scrape_handler: Arc<ScrapeHandler>,
45-
pub keys_handler: Arc<KeysHandler>,
46-
pub authentication_service: Arc<AuthenticationService>,
47-
pub in_memory_whitelist: Arc<InMemoryWhitelist>,
48-
pub whitelist_authorization: Arc<whitelist::authorization::WhitelistAuthorization>,
49-
pub whitelist_manager: Arc<WhitelistManager>,
50-
pub in_memory_torrent_repository: Arc<InMemoryTorrentRepository>,
51-
pub db_torrent_repository: Arc<DatabasePersistentTorrentRepository>,
52-
pub torrents_manager: Arc<TorrentsManager>,
28+
pub tracker_core_container: TrackerCoreContainer,
5329

5430
// UDP Tracker Core Services
5531
pub udp_core_stats_event_sender: Arc<Option<Box<dyn bittorrent_udp_tracker_core::event::sender::Sender>>>,
@@ -122,19 +98,7 @@ impl AppContainer {
12298
let udp_server_stats_repository = Arc::new(udp_server_stats_repository);
12399

124100
AppContainer {
125-
// Tracker Core Services
126-
core_config,
127-
database: tracker_core_container.database,
128-
announce_handler: tracker_core_container.announce_handler,
129-
scrape_handler: tracker_core_container.scrape_handler,
130-
keys_handler: tracker_core_container.keys_handler,
131-
authentication_service: tracker_core_container.authentication_service,
132-
in_memory_whitelist: tracker_core_container.in_memory_whitelist,
133-
whitelist_authorization: tracker_core_container.whitelist_authorization,
134-
whitelist_manager: tracker_core_container.whitelist_manager,
135-
in_memory_torrent_repository: tracker_core_container.in_memory_torrent_repository,
136-
db_torrent_repository: tracker_core_container.db_torrent_repository,
137-
torrents_manager: tracker_core_container.torrents_manager,
101+
tracker_core_container,
138102

139103
// UDP Tracker Core Services
140104
udp_core_stats_event_sender,
@@ -159,11 +123,11 @@ impl AppContainer {
159123
#[must_use]
160124
pub fn http_tracker_container(&self, http_tracker_config: &Arc<HttpTracker>) -> HttpTrackerCoreContainer {
161125
HttpTrackerCoreContainer {
162-
core_config: self.core_config.clone(),
163-
announce_handler: self.announce_handler.clone(),
164-
scrape_handler: self.scrape_handler.clone(),
165-
whitelist_authorization: self.whitelist_authorization.clone(),
166-
authentication_service: self.authentication_service.clone(),
126+
core_config: self.tracker_core_container.core_config.clone(),
127+
announce_handler: self.tracker_core_container.announce_handler.clone(),
128+
scrape_handler: self.tracker_core_container.scrape_handler.clone(),
129+
whitelist_authorization: self.tracker_core_container.whitelist_authorization.clone(),
130+
authentication_service: self.tracker_core_container.authentication_service.clone(),
167131

168132
http_tracker_config: http_tracker_config.clone(),
169133
http_stats_event_sender: self.http_stats_event_sender.clone(),
@@ -176,10 +140,10 @@ impl AppContainer {
176140
#[must_use]
177141
pub fn udp_tracker_container(&self, udp_tracker_config: &Arc<UdpTracker>) -> UdpTrackerCoreContainer {
178142
UdpTrackerCoreContainer {
179-
core_config: self.core_config.clone(),
180-
announce_handler: self.announce_handler.clone(),
181-
scrape_handler: self.scrape_handler.clone(),
182-
whitelist_authorization: self.whitelist_authorization.clone(),
143+
core_config: self.tracker_core_container.core_config.clone(),
144+
announce_handler: self.tracker_core_container.announce_handler.clone(),
145+
scrape_handler: self.tracker_core_container.scrape_handler.clone(),
146+
whitelist_authorization: self.tracker_core_container.whitelist_authorization.clone(),
183147

184148
udp_tracker_config: udp_tracker_config.clone(),
185149
udp_core_stats_event_sender: self.udp_core_stats_event_sender.clone(),
@@ -194,11 +158,12 @@ impl AppContainer {
194158
#[must_use]
195159
pub fn tracker_http_api_container(&self, http_api_config: &Arc<HttpApi>) -> TrackerHttpApiCoreContainer {
196160
TrackerHttpApiCoreContainer {
161+
core_config: self.tracker_core_container.core_config.clone(),
162+
in_memory_torrent_repository: self.tracker_core_container.in_memory_torrent_repository.clone(),
163+
keys_handler: self.tracker_core_container.keys_handler.clone(),
164+
whitelist_manager: self.tracker_core_container.whitelist_manager.clone(),
165+
197166
http_api_config: http_api_config.clone(),
198-
core_config: self.core_config.clone(),
199-
in_memory_torrent_repository: self.in_memory_torrent_repository.clone(),
200-
keys_handler: self.keys_handler.clone(),
201-
whitelist_manager: self.whitelist_manager.clone(),
202167
ban_service: self.udp_ban_service.clone(),
203168
http_stats_repository: self.http_stats_repository.clone(),
204169
udp_core_stats_repository: self.udp_core_stats_repository.clone(),

0 commit comments

Comments
 (0)