Skip to content

Commit dfba00c

Browse files
committed
feat: [#1358] allow disabling the event sender in the torrent-repository pkg
1 parent 60c00e8 commit dfba00c

File tree

24 files changed

+118
-50
lines changed

24 files changed

+118
-50
lines changed

packages/axum-http-tracker-server/src/environment.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ impl EnvContainer {
144144
.expect("missing HTTP tracker configuration");
145145
let http_tracker_config = Arc::new(http_tracker_config[0].clone());
146146

147-
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize());
147+
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize(
148+
configuration.core.tracker_usage_statistics.into(),
149+
));
148150

149151
let tracker_core_container = Arc::new(TrackerCoreContainer::initialize_from(
150152
&core_config,

packages/axum-http-tracker-server/src/server.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ mod tests {
280280
let http_core_broadcaster = Broadcaster::default();
281281
let http_stats_repository = Arc::new(Repository::new());
282282
let http_stats_event_bus = Arc::new(EventBus::new(
283-
configuration.core.tracker_usage_statistics,
283+
configuration.core.tracker_usage_statistics.into(),
284284
http_core_broadcaster.clone(),
285285
));
286286

@@ -290,7 +290,9 @@ mod tests {
290290
let _unused = run_event_listener(http_stats_event_bus.receiver(), &http_stats_repository);
291291
}
292292

293-
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize());
293+
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize(
294+
configuration.core.tracker_usage_statistics.into(),
295+
));
294296

295297
let tracker_core_container = Arc::new(TrackerCoreContainer::initialize_from(
296298
&core_config,

packages/axum-http-tracker-server/src/v1/handlers/announce.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ mod tests {
168168
let http_core_broadcaster = Broadcaster::default();
169169
let http_stats_repository = Arc::new(Repository::new());
170170
let http_stats_event_bus = Arc::new(EventBus::new(
171-
config.core.tracker_usage_statistics,
171+
config.core.tracker_usage_statistics.into(),
172172
http_core_broadcaster.clone(),
173173
));
174174

packages/axum-http-tracker-server/src/v1/handlers/scrape.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ mod tests {
139139
let http_core_broadcaster = Broadcaster::default();
140140
let http_stats_repository = Arc::new(Repository::new());
141141
let http_stats_event_bus = Arc::new(EventBus::new(
142-
config.core.tracker_usage_statistics,
142+
config.core.tracker_usage_statistics.into(),
143143
http_core_broadcaster.clone(),
144144
));
145145

packages/axum-rest-tracker-api-server/src/environment.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@ impl EnvContainer {
173173
.clone(),
174174
);
175175

176-
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize());
176+
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize(
177+
core_config.tracker_usage_statistics.into(),
178+
));
177179

178180
let tracker_core_container = Arc::new(TrackerCoreContainer::initialize_from(
179181
&core_config,

packages/events/src/bus.rs

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,60 @@ use std::sync::Arc;
33
use crate::broadcaster::Broadcaster;
44
use crate::{receiver, sender};
55

6+
#[derive(Clone, Debug)]
7+
pub enum SenderStatus {
8+
Enabled,
9+
Disabled,
10+
}
11+
12+
impl From<bool> for SenderStatus {
13+
fn from(enabled: bool) -> Self {
14+
if enabled {
15+
Self::Enabled
16+
} else {
17+
Self::Disabled
18+
}
19+
}
20+
}
21+
22+
impl From<SenderStatus> for bool {
23+
fn from(sender_status: SenderStatus) -> Self {
24+
match sender_status {
25+
SenderStatus::Enabled => true,
26+
SenderStatus::Disabled => false,
27+
}
28+
}
29+
}
30+
631
#[derive(Clone, Debug)]
732
pub struct EventBus<Event: Sync + Send + Clone + 'static> {
8-
pub enable_sender: bool,
33+
pub sender_status: SenderStatus,
934
pub broadcaster: Broadcaster<Event>,
1035
}
1136

1237
impl<Event: Sync + Send + Clone + 'static> Default for EventBus<Event> {
1338
fn default() -> Self {
14-
let enable_sender = true;
39+
let sender_status = SenderStatus::Enabled;
1540
let broadcaster = Broadcaster::<Event>::default();
1641

17-
Self::new(enable_sender, broadcaster)
42+
Self::new(sender_status, broadcaster)
1843
}
1944
}
2045

2146
impl<Event: Sync + Send + Clone + 'static> EventBus<Event> {
2247
#[must_use]
23-
pub fn new(enable_sender: bool, broadcaster: Broadcaster<Event>) -> Self {
48+
pub fn new(sender_status: SenderStatus, broadcaster: Broadcaster<Event>) -> Self {
2449
Self {
25-
enable_sender,
50+
sender_status,
2651
broadcaster,
2752
}
2853
}
2954

3055
#[must_use]
3156
pub fn sender(&self) -> Option<Arc<dyn sender::Sender<Event = Event>>> {
32-
if self.enable_sender {
33-
Some(Arc::new(self.broadcaster.clone()))
34-
} else {
35-
None
57+
match self.sender_status {
58+
SenderStatus::Enabled => Some(Arc::new(self.broadcaster.clone())),
59+
SenderStatus::Disabled => None,
3660
}
3761
}
3862

@@ -50,14 +74,14 @@ mod tests {
5074

5175
#[tokio::test]
5276
async fn it_should_provide_an_event_sender_when_enabled() {
53-
let bus = EventBus::<String>::new(true, Broadcaster::default());
77+
let bus = EventBus::<String>::new(SenderStatus::Enabled, Broadcaster::default());
5478

5579
assert!(bus.sender().is_some());
5680
}
5781

5882
#[tokio::test]
5983
async fn it_should_not_provide_event_sender_when_disabled() {
60-
let bus = EventBus::<String>::new(false, Broadcaster::default());
84+
let bus = EventBus::<String>::new(SenderStatus::Disabled, Broadcaster::default());
6185

6286
assert!(bus.sender().is_none());
6387
}

packages/http-tracker-core/benches/helpers/util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn initialize_core_tracker_services_with_config(config: &Configuration) -> (
6262
let http_core_broadcaster = Broadcaster::default();
6363
let http_stats_repository = Arc::new(Repository::new());
6464
let http_stats_event_bus = Arc::new(EventBus::new(
65-
config.core.tracker_usage_statistics,
65+
config.core.tracker_usage_statistics.into(),
6666
http_core_broadcaster.clone(),
6767
));
6868

packages/http-tracker-core/src/container.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ pub struct HttpTrackerCoreContainer {
2727
impl HttpTrackerCoreContainer {
2828
#[must_use]
2929
pub fn initialize(core_config: &Arc<Core>, http_tracker_config: &Arc<HttpTracker>) -> Arc<Self> {
30-
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize());
30+
let torrent_repository_container = Arc::new(TorrentRepositoryContainer::initialize(
31+
core_config.tracker_usage_statistics.into(),
32+
));
3133

3234
let tracker_core_container = Arc::new(TrackerCoreContainer::initialize_from(
3335
core_config,
@@ -80,7 +82,7 @@ impl HttpTrackerCoreServices {
8082
let http_core_broadcaster = Broadcaster::default();
8183
let http_stats_repository = Arc::new(Repository::new());
8284
let http_stats_event_bus = Arc::new(EventBus::new(
83-
tracker_core_container.core_config.tracker_usage_statistics,
85+
tracker_core_container.core_config.tracker_usage_statistics.into(),
8486
http_core_broadcaster.clone(),
8587
));
8688

packages/http-tracker-core/src/services/announce.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ mod tests {
256256
let http_core_broadcaster = Broadcaster::default();
257257
let http_stats_repository = Arc::new(Repository::new());
258258
let http_stats_event_bus = Arc::new(EventBus::new(
259-
config.core.tracker_usage_statistics,
259+
config.core.tracker_usage_statistics.into(),
260260
http_core_broadcaster.clone(),
261261
));
262262

packages/http-tracker-core/src/services/scrape.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ mod tests {
255255
use bittorrent_http_tracker_protocol::v1::services::peer_ip_resolver::{ClientIpSources, RemoteClientAddr, ResolvedIp};
256256
use bittorrent_tracker_core::announce_handler::PeersWanted;
257257
use mockall::predicate::eq;
258+
use torrust_tracker_events::bus::SenderStatus;
258259
use torrust_tracker_primitives::core::ScrapeData;
259260
use torrust_tracker_primitives::service_binding::{Protocol, ServiceBinding};
260261
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
@@ -276,7 +277,7 @@ mod tests {
276277

277278
// HTTP core stats
278279
let http_core_broadcaster = Broadcaster::default();
279-
let http_stats_event_bus = Arc::new(EventBus::new(false, http_core_broadcaster.clone()));
280+
let http_stats_event_bus = Arc::new(EventBus::new(SenderStatus::Disabled, http_core_broadcaster.clone()));
280281

281282
let http_stats_event_sender = http_stats_event_bus.sender();
282283

@@ -446,6 +447,7 @@ mod tests {
446447
use bittorrent_http_tracker_protocol::v1::services::peer_ip_resolver::{ClientIpSources, RemoteClientAddr, ResolvedIp};
447448
use bittorrent_tracker_core::announce_handler::PeersWanted;
448449
use mockall::predicate::eq;
450+
use torrust_tracker_events::bus::SenderStatus;
449451
use torrust_tracker_primitives::core::ScrapeData;
450452
use torrust_tracker_primitives::service_binding::{Protocol, ServiceBinding};
451453
use torrust_tracker_test_helpers::configuration;
@@ -468,7 +470,7 @@ mod tests {
468470

469471
// HTTP core stats
470472
let http_core_broadcaster = Broadcaster::default();
471-
let http_stats_event_bus = Arc::new(EventBus::new(false, http_core_broadcaster.clone()));
473+
let http_stats_event_bus = Arc::new(EventBus::new(SenderStatus::Disabled, http_core_broadcaster.clone()));
472474

473475
let http_stats_event_sender = http_stats_event_bus.sender();
474476

0 commit comments

Comments
 (0)