diff --git a/Cargo.lock b/Cargo.lock index 6735518cf..3666e9952 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5586,7 +5586,6 @@ name = "torrust-tracker-clock" version = "3.0.0-develop" dependencies = [ "chrono", - "torrust-tracker-primitives", "tracing", ] @@ -5649,7 +5648,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.18", - "torrust-tracker-primitives", + "torrust-tracker-clock", "tracing", ] @@ -5666,6 +5665,7 @@ dependencies = [ "tdyne-peer-id", "tdyne-peer-id-registry", "thiserror 2.0.18", + "torrust-tracker-clock", "torrust-tracker-configuration", "url", ] diff --git a/docs/issues/drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md b/docs/issues/drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md deleted file mode 100644 index 4cdb77e81..000000000 --- a/docs/issues/drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -doc-type: issue -issue-type: task -status: draft -priority: p3 -github-issue: null -spec-path: docs/issues/drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md -branch: null -related-pr: null -last-updated-utc: 2026-05-18 00:00 -semantic-links: - skill-links: - - create-issue - related-artifacts: - - packages/primitives/src/lib.rs - - packages/clock/Cargo.toml - - packages/clock/src/clock/mod.rs - - packages/clock/src/conv/mod.rs - - docs/issues/open/1669-overhaul-packages/EPIC.md - - docs/issues/drafts/1669-09-rename-torrust-tracker-clock-to-torrust-clock.md ---- - - - -# Issue #[To be assigned] - Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-clock` - -## Goal - -Move the `DurationSinceUnixEpoch` type alias from `torrust-tracker-primitives` into -`torrust-clock` — where it semantically belongs — and update all workspace consumers to -import it from `torrust-clock`. This removes the only `torrust-tracker-*` dependency from -`torrust-clock`, making the crate fully self-contained and ready for future extraction to a -standalone repository. - -## Background - -`DurationSinceUnixEpoch` is defined in `packages/primitives/src/lib.rs` as: - -```rust -pub type DurationSinceUnixEpoch = Duration; -``` - -It is a trivial alias for `std::time::Duration` with no tracker-specific logic. The -`torrust-clock` package is the primary user of this type: it appears in the `Clock` trait -itself (`fn now() -> DurationSinceUnixEpoch`) and in the conversion helpers -(`packages/clock/src/conv/mod.rs`). Having it live in `torrust-tracker-primitives` is an -accident of history, not a design intent. - -After the clock rename (see -[1669-09-rename-torrust-tracker-clock-to-torrust-clock.md](1669-09-rename-torrust-tracker-clock-to-torrust-clock.md)), -`torrust-clock` still carries a `torrust-tracker-primitives` dependency solely for this -type alias. A generic `torrust-clock` crate depending on a `torrust-tracker-*` package is -semantically inconsistent and would block future extraction to a standalone repository. - -**Key implementation note**: Since `DurationSinceUnixEpoch` is a trivial type alias (both -the old and new definitions are `= std::time::Duration`), there is no type incompatibility -between `torrust_tracker_primitives::DurationSinceUnixEpoch` and -`torrust_clock::DurationSinceUnixEpoch`. All 80+ workspace files that currently import the -type from `torrust-tracker-primitives` need only a trivial import path change. - -**Circular dep constraint**: `torrust-tracker-primitives` must **not** re-export the type -from `torrust-clock`. That would introduce a circular dependency (since `torrust-clock` -previously depended on primitives). Instead, `torrust-tracker-primitives` retains its own -independent `pub type DurationSinceUnixEpoch = Duration` definition. Once all workspace -consumers have been migrated to `torrust_clock::DurationSinceUnixEpoch`, the copy in -`torrust-tracker-primitives` can be deprecated and removed in a future cleanup. - -**Prerequisite**: SI-09 technical steps must be complete before this subissue begins: the -crate must be renamed (`name = "torrust-clock"` in `packages/clock/Cargo.toml`), all -dependent `Cargo.toml` files updated to use the new key, and all `use`-path references -migrated to `torrust_clock::` (SI-09 T1–T4). The EPIC table update (SI-09 T12) is not a -blocker. - -This issue is a subissue of EPIC [#1669](../open/1669-overhaul-packages/EPIC.md) -(Overhaul: Packages). - -## Scope - -### In Scope - -- Add `pub type DurationSinceUnixEpoch = std::time::Duration;` to `packages/clock/src/lib.rs` - (or a dedicated `types.rs` module), exported as part of the public API. -- Update `packages/clock/src/clock/mod.rs` and `packages/clock/src/conv/mod.rs` to use the - local definition instead of importing from `torrust-tracker-primitives`. -- Remove the `torrust-tracker-primitives` dependency from `packages/clock/Cargo.toml` - (it was added only for this type alias). -- Update all 80+ workspace files that import `DurationSinceUnixEpoch` from - `torrust_tracker_primitives` to import it from `torrust_clock` instead. -- Verify the workspace builds and all tests pass. -- Update `torrust-tracker-metrics` to import `DurationSinceUnixEpoch` from `torrust-clock` - instead of `torrust-tracker-primitives`, eliminating that dependency edge entirely (see F-02). - -### Out of Scope - -- Removing `DurationSinceUnixEpoch` from `torrust-tracker-primitives`: that requires a - crates.io version bump to signal the breaking change; deferred to a separate cleanup - subissue once all consumers have migrated. -- Changes to the type itself — it stays `= std::time::Duration`. -- Extracting `torrust-clock` to a standalone repository (a separate, later subissue). - -## Implementation Plan - -Status values: `TODO`, `IN_PROGRESS`, `BLOCKED`, `DONE`. - -| ID | Status | Task | Notes / Expected Output | -| --- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| T1 | BLOCKED | Confirm SI-09 technical steps complete (T1–T4: crate renamed to `torrust-clock`, dep keys updated, `use`-paths migrated workspace-wide) | `name = "torrust-clock"` in `packages/clock/Cargo.toml`; workspace builds cleanly | -| T2 | TODO | Define `DurationSinceUnixEpoch` in `packages/clock/src/lib.rs` | `pub type DurationSinceUnixEpoch = std::time::Duration;` | -| T3 | TODO | Update `packages/clock/src/clock/mod.rs` and `packages/clock/src/conv/mod.rs` to use the local definition | Replace `use torrust_tracker_primitives::DurationSinceUnixEpoch` with local import | -| T4 | TODO | Remove `torrust-tracker-primitives` dep from `packages/clock/Cargo.toml` | Dep entry removed; workspace build still passes | -| T5 | TODO | Update all 80+ workspace files to import `DurationSinceUnixEpoch` from `torrust_clock` instead of `torrust_tracker_primitives` | Use M1 grep to find the full file list; one-line change per file | -| T6 | TODO | Run `cargo build --workspace` and `cargo test --workspace` | Clean build and all tests pass | -| T7 | TODO | Run `linter all` | Exit code `0` | -| T8 | TODO | Update EPIC #1669 extraction ordering table: note that `torrust-clock` has no `torrust-tracker-*` deps | `torrust-clock` row: unpublished runtime workspace deps column set to `None` | -| T9 | TODO | Update `torrust-tracker-metrics`: replace import of `DurationSinceUnixEpoch` from `torrust_tracker_primitives` with `torrust_clock`; remove `torrust-tracker-primitives` dep from its `Cargo.toml` if no longer needed | `cargo build -p torrust-tracker-metrics` succeeds; `cargo machete -p torrust-tracker-metrics` reports no unused deps | - -## Progress Tracking - -### Workflow Checkpoints - -- [ ] Spec drafted in `docs/issues/drafts/` -- [ ] Spec reviewed and approved by user/maintainer -- [ ] Clock rename subissue complete (prerequisite) -- [ ] GitHub issue created and issue number added to this spec -- [ ] Spec moved to `docs/issues/open/` with issue number prefix -- [ ] Implementation completed -- [ ] Automatic verification completed (`linter all`, `cargo test --workspace`) -- [ ] Manual verification scenarios executed and recorded -- [ ] Acceptance criteria reviewed after implementation and updated with evidence -- [ ] EPIC #1669 Active Subissues table updated to `DONE` -- [ ] Issue closed and spec moved to `docs/issues/closed/` - -### Progress Log - -- 2026-05-15 12:00 UTC - josecelano - Spec drafted as subissue of EPIC #1669 following - Option A decision in clock rename spec. `DurationSinceUnixEpoch` has 80+ workspace - consumers; all import from `torrust-tracker-primitives` today. - -## Acceptance Criteria - -- [ ] `packages/clock/src/lib.rs` (or a submodule) exports `pub type DurationSinceUnixEpoch = std::time::Duration`. -- [ ] `packages/clock/Cargo.toml` does not list `torrust-tracker-primitives` as a dependency. -- [ ] No file in `packages/clock/src/` imports `DurationSinceUnixEpoch` from `torrust_tracker_primitives`. -- [ ] No other workspace file imports `DurationSinceUnixEpoch` from `torrust_tracker_primitives` - (all migrated to `torrust_clock`). -- [ ] `torrust-tracker-metrics` no longer lists `torrust-tracker-primitives` as a dependency - (or only lists it for non-`DurationSinceUnixEpoch` reasons). -- [ ] `cargo build --workspace` succeeds with zero errors. -- [ ] `cargo test --workspace` passes with zero failures. -- [ ] `linter all` exits with code `0`. - -## Verification Plan - -### Automatic Checks - -- `cargo build --workspace` -- `cargo test --doc --workspace` -- `cargo test --tests --workspace --all-targets --all-features` -- `linter all` -- `cargo machete` (no unused dependencies) - -### Manual Verification Scenarios - -Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`. - -| ID | Scenario | Command / Steps | Expected Result | Status | Evidence | -| --- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------- | ------ | -------- | -| M1 | No workspace import from `torrust_tracker_primitives` for this type | `grep -r "torrust_tracker_primitives::DurationSinceUnixEpoch" . --include="*.rs"` | Zero matches | TODO | | -| M2 | `torrust-clock` dep list is clean | `grep "torrust-tracker-primitives" packages/clock/Cargo.toml` | No output | TODO | | -| M3 | `torrust-clock` exports `DurationSinceUnixEpoch` | `grep "DurationSinceUnixEpoch" packages/clock/src/lib.rs` | `pub type DurationSinceUnixEpoch` found | TODO | | diff --git a/docs/issues/open/1669-overhaul-packages/EPIC.md b/docs/issues/open/1669-overhaul-packages/EPIC.md index b32d02f44..1493d8bfa 100644 --- a/docs/issues/open/1669-overhaul-packages/EPIC.md +++ b/docs/issues/open/1669-overhaul-packages/EPIC.md @@ -205,7 +205,7 @@ rule priority. Status: TODO unless noted. `SI-XX` = recommended implementation sequence number. - [ ] SI-01 — Establish baseline: dependency graph + README audit _(analysis; no blockers; informs all other subissues)_ -- [ ] SI-02 — Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-clock` _(Rule M; no hard blockers)_ +- [x] SI-02 — Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-tracker-clock` _(Rule M; no hard blockers)_ - [ ] SI-03 — Move `DEFAULT_TIMEOUT` from `torrust-tracker-configuration` to `torrust-tracker-clock` _(Rule M; no blockers)_ - [ ] SI-04 — Move `AnnouncePolicy` from `torrust-tracker-configuration` to `torrust-tracker-primitives` _(Rule M; no blockers)_ - [ ] SI-05 — Create `torrust-net-primitives` and move `ServiceBinding` from `torrust-tracker-primitives` _(Rule M + new package; no blockers)_ @@ -222,23 +222,23 @@ Status: TODO unless noted. `SI-XX` = recommended implementation sequence number. Details: -| SI | Issue | Local Spec | Status | Notes | -| ----- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------ | -| SI-01 | #TBD — Establish baseline: dependency graph + README audit | [docs/issues/drafts/1669-01-establish-baseline-analysis.md](../../drafts/1669-01-establish-baseline-analysis.md) | TODO | No blockers; informs extraction decisions | -| SI-02 | #TBD — Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-clock` | [docs/issues/drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md](../../drafts/1669-02-move-duration-since-unix-epoch-to-torrust-clock.md) | TODO | Rule M; no hard blockers; prerequisite for SI-13 | -| SI-03 | #TBD — Move `DEFAULT_TIMEOUT` from `torrust-tracker-configuration` to `torrust-tracker-clock` | [docs/issues/drafts/1669-03-move-default-timeout-from-configuration-to-clock.md](../../drafts/1669-03-move-default-timeout-from-configuration-to-clock.md) | TODO | Rule M; no blockers; prerequisite for SI-09 (clock rename) | -| SI-04 | #TBD — Move `AnnouncePolicy` from `torrust-tracker-configuration` to `torrust-tracker-primitives` | [docs/issues/drafts/1669-04-move-announce-policy-to-torrust-tracker-primitives.md](../../drafts/1669-04-move-announce-policy-to-torrust-tracker-primitives.md) | TODO | Rule M; fixes inverted dep (primitives → configuration); no blockers | -| SI-05 | #TBD — Create `torrust-net-primitives` and move `ServiceBinding` from `torrust-tracker-primitives` | [docs/issues/drafts/1669-05-create-torrust-net-primitives-and-move-service-binding.md](../../drafts/1669-05-create-torrust-net-primitives-and-move-service-binding.md) | TODO | Rule M + new package; generic networking type; breaks server-lib → tracker-primitives dep | -| SI-06 | #TBD — Resolve `bittorrent-tracker-core` ↔ `torrust-rest-tracker-api-client` layer violation | [docs/issues/drafts/1669-06-resolve-bittorrent-tracker-core-rest-api-layer-violation.md](../../drafts/1669-06-resolve-bittorrent-tracker-core-rest-api-layer-violation.md) | TODO | Rule M; stale unused dev dep — one-line `Cargo.toml` deletion; unblocks `bittorrent-tracker-core` extraction | -| SI-07 | #TBD — Align `torrust-` prefix: rename 7 tracker-specific packages to `torrust-tracker-` | [docs/issues/drafts/1669-07-align-torrust-prefix-rename-tracker-specific-packages.md](../../drafts/1669-07-align-torrust-prefix-rename-tracker-specific-packages.md) | TODO | Rule U; none of the 7 are published; pure workspace rename; no blockers | -| SI-08 | #TBD — Rename `torrust-tracker-metrics` to `torrust-metrics` | [docs/issues/drafts/1669-08-rename-torrust-tracker-metrics-to-torrust-metrics.md](../../drafts/1669-08-rename-torrust-tracker-metrics-to-torrust-metrics.md) | TODO | Rule U; not yet published; no blockers; prerequisite for SI-14 | -| SI-09 | #TBD — Rename `torrust-tracker-clock` to `torrust-clock` | [docs/issues/drafts/1669-09-rename-torrust-tracker-clock-to-torrust-clock.md](../../drafts/1669-09-rename-torrust-tracker-clock-to-torrust-clock.md) | TODO | Rule P; published on crates.io; requires SI-03; prerequisite for SI-13 | -| SI-10 | #TBD — Rename `torrust-tracker-located-error` to `torrust-located-error` | [docs/issues/drafts/1669-10-rename-torrust-tracker-located-error-to-torrust-located-error.md](../../drafts/1669-10-rename-torrust-tracker-located-error-to-torrust-located-error.md) | TODO | Rule P; published on crates.io; no blockers | -| SI-11 | #TBD — Update all package READMEs | [docs/issues/drafts/1669-11-update-all-package-readmes.md](../../drafts/1669-11-update-all-package-readmes.md) | TODO | Documentation; requires SI-07–SI-10; before SI-12 | -| SI-12 | #TBD — Extract and rename `torrust-tracker-contrib-bencode` to `torrust-bencode` | [docs/issues/drafts/1669-12-extract-torrust-tracker-contrib-bencode-to-torrust-bencode.md](../../drafts/1669-12-extract-torrust-tracker-contrib-bencode-to-torrust-bencode.md) | TODO | Rule E; no workspace-dep blockers; Apache-2.0; one internal consumer | -| SI-13 | #TBD — Extract `torrust-clock` to standalone repository | [docs/issues/drafts/1669-13-extract-torrust-clock-to-standalone-repo.md](../../drafts/1669-13-extract-torrust-clock-to-standalone-repo.md) | TODO | Rule E; requires SI-02 + SI-09; 11 workspace consumers to migrate | -| SI-14 | #TBD — Extract `torrust-metrics` to standalone repository | [docs/issues/drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md](../../drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md) | TODO | Rule E; requires SI-08; 7 workspace consumers to migrate | -| SI-15 | #TBD — Extract `torrust-tracker-client` to standalone repository | [docs/issues/drafts/1669-15-extract-torrust-tracker-client-to-standalone-repo.md](../../drafts/1669-15-extract-torrust-tracker-client-to-standalone-repo.md) | TODO | Rule E; blocked by `bittorrent-udp-tracker-protocol` publication (external to this EPIC) | +| SI | Issue | Local Spec | Status | Notes | +| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------ | +| SI-01 | #TBD — Establish baseline: dependency graph + README audit | [docs/issues/drafts/1669-01-establish-baseline-analysis.md](../../drafts/1669-01-establish-baseline-analysis.md) | TODO | No blockers; informs extraction decisions | +| SI-02 | [#1790](https://github.com/torrust/torrust-tracker/issues/1790) — Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-tracker-clock` | [docs/issues/open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md](../../open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md) | DONE | Rule M; no hard blockers; prerequisite for SI-13 | +| SI-03 | #TBD — Move `DEFAULT_TIMEOUT` from `torrust-tracker-configuration` to `torrust-tracker-clock` | [docs/issues/drafts/1669-03-move-default-timeout-from-configuration-to-clock.md](../../drafts/1669-03-move-default-timeout-from-configuration-to-clock.md) | TODO | Rule M; no blockers; prerequisite for SI-09 (clock rename) | +| SI-04 | #TBD — Move `AnnouncePolicy` from `torrust-tracker-configuration` to `torrust-tracker-primitives` | [docs/issues/drafts/1669-04-move-announce-policy-to-torrust-tracker-primitives.md](../../drafts/1669-04-move-announce-policy-to-torrust-tracker-primitives.md) | TODO | Rule M; fixes inverted dep (primitives → configuration); no blockers | +| SI-05 | #TBD — Create `torrust-net-primitives` and move `ServiceBinding` from `torrust-tracker-primitives` | [docs/issues/drafts/1669-05-create-torrust-net-primitives-and-move-service-binding.md](../../drafts/1669-05-create-torrust-net-primitives-and-move-service-binding.md) | TODO | Rule M + new package; generic networking type; breaks server-lib → tracker-primitives dep | +| SI-06 | #TBD — Resolve `bittorrent-tracker-core` ↔ `torrust-rest-tracker-api-client` layer violation | [docs/issues/drafts/1669-06-resolve-bittorrent-tracker-core-rest-api-layer-violation.md](../../drafts/1669-06-resolve-bittorrent-tracker-core-rest-api-layer-violation.md) | TODO | Rule M; stale unused dev dep — one-line `Cargo.toml` deletion; unblocks `bittorrent-tracker-core` extraction | +| SI-07 | #TBD — Align `torrust-` prefix: rename 7 tracker-specific packages to `torrust-tracker-` | [docs/issues/drafts/1669-07-align-torrust-prefix-rename-tracker-specific-packages.md](../../drafts/1669-07-align-torrust-prefix-rename-tracker-specific-packages.md) | TODO | Rule U; none of the 7 are published; pure workspace rename; no blockers | +| SI-08 | #TBD — Rename `torrust-tracker-metrics` to `torrust-metrics` | [docs/issues/drafts/1669-08-rename-torrust-tracker-metrics-to-torrust-metrics.md](../../drafts/1669-08-rename-torrust-tracker-metrics-to-torrust-metrics.md) | TODO | Rule U; not yet published; no blockers; prerequisite for SI-14 | +| SI-09 | #TBD — Rename `torrust-tracker-clock` to `torrust-clock` | [docs/issues/drafts/1669-09-rename-torrust-tracker-clock-to-torrust-clock.md](../../drafts/1669-09-rename-torrust-tracker-clock-to-torrust-clock.md) | TODO | Rule P; published on crates.io; requires SI-03; prerequisite for SI-13 | +| SI-10 | #TBD — Rename `torrust-tracker-located-error` to `torrust-located-error` | [docs/issues/drafts/1669-10-rename-torrust-tracker-located-error-to-torrust-located-error.md](../../drafts/1669-10-rename-torrust-tracker-located-error-to-torrust-located-error.md) | TODO | Rule P; published on crates.io; no blockers | +| SI-11 | #TBD — Update all package READMEs | [docs/issues/drafts/1669-11-update-all-package-readmes.md](../../drafts/1669-11-update-all-package-readmes.md) | TODO | Documentation; requires SI-07–SI-10; before SI-12 | +| SI-12 | #TBD — Extract and rename `torrust-tracker-contrib-bencode` to `torrust-bencode` | [docs/issues/drafts/1669-12-extract-torrust-tracker-contrib-bencode-to-torrust-bencode.md](../../drafts/1669-12-extract-torrust-tracker-contrib-bencode-to-torrust-bencode.md) | TODO | Rule E; no workspace-dep blockers; Apache-2.0; one internal consumer | +| SI-13 | #TBD — Extract `torrust-clock` to standalone repository | [docs/issues/drafts/1669-13-extract-torrust-clock-to-standalone-repo.md](../../drafts/1669-13-extract-torrust-clock-to-standalone-repo.md) | TODO | Rule E; requires SI-02 + SI-09; 11 workspace consumers to migrate | +| SI-14 | #TBD — Extract `torrust-metrics` to standalone repository | [docs/issues/drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md](../../drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md) | TODO | Rule E; requires SI-08; 7 workspace consumers to migrate | +| SI-15 | #TBD — Extract `torrust-tracker-client` to standalone repository | [docs/issues/drafts/1669-15-extract-torrust-tracker-client-to-standalone-repo.md](../../drafts/1669-15-extract-torrust-tracker-client-to-standalone-repo.md) | TODO | Rule E; blocked by `bittorrent-udp-tracker-protocol` publication (external to this EPIC) | > New subissues are created as analysis reveals the next improvement. The EPIC is never > fully planned up front. @@ -334,8 +334,8 @@ against this constraint (verified May 2026). | `torrust-tracker-contrib-bencode` | Yes | None | ✅ Now | Extraction subissue exists; no blockers | | `bittorrent-peer-id` | No | None | ✅ Now | No spec yet; can be extracted first in the `bittorrent-*` sequence | | `torrust-tracker-located-error` | Yes | None | ✅ Already published | No extraction spec yet | -| `torrust-tracker-clock` (→ `torrust-clock`) | Yes | `torrust-tracker-primitives` (published ✅); `DurationSinceUnixEpoch` will be removed by follow-up subissue | ✅ After rename + move | See [extract clock subissue](../../drafts/1669-13-extract-torrust-clock-to-standalone-repo.md) | -| `torrust-tracker-metrics` (→ `torrust-metrics`) | No | `torrust-tracker-primitives` (published ✅) | ✅ After rename | See [extract metrics subissue](../../drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md) | +| `torrust-tracker-clock` (→ `torrust-clock`) | Yes | None (✅ `torrust-tracker-primitives` dep removed by SI-02 #1790) | ✅ After rename | See [extract clock subissue](../../drafts/1669-13-extract-torrust-clock-to-standalone-repo.md) | +| `torrust-tracker-metrics` (→ `torrust-metrics`) | No | `torrust-tracker-clock` (published ✅; was `torrust-tracker-primitives` — removed by SI-02 #1790) | ✅ After rename | See [extract metrics subissue](../../drafts/1669-14-extract-torrust-metrics-to-standalone-repo.md) | | `bittorrent-udp-tracker-protocol` | No | `bittorrent-peer-id` (not published) | ❌ | After `bittorrent-peer-id` | | `bittorrent-tracker-core` | No | `torrust-tracker-events`, `torrust-tracker-metrics`, `torrust-tracker-swarm-coordination-registry`, `torrust-rest-tracker-api-client` (all unpublished) | ❌ Very deep chain | After all four above; also has `torrust-rest-tracker-api-client` as a runtime dep — a layer violation worth resolving before extraction | | `bittorrent-http-tracker-protocol` | No | `bittorrent-udp-tracker-protocol`, `bittorrent-tracker-core` (both unpublished) | ❌ | After `bittorrent-udp-tracker-protocol` and `bittorrent-tracker-core` | diff --git a/docs/issues/open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md b/docs/issues/open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md new file mode 100644 index 000000000..ccdd85e49 --- /dev/null +++ b/docs/issues/open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md @@ -0,0 +1,175 @@ +--- +doc-type: issue +issue-type: task +status: open +priority: p3 +github-issue: 1790 +spec-path: docs/issues/open/1790-move-duration-since-unix-epoch-to-torrust-tracker-clock.md +branch: 1790-move-duration-since-unix-epoch +related-pr: 1791 +last-updated-utc: 2026-05-18 20:00 +semantic-links: + skill-links: + - create-issue + related-artifacts: + - packages/primitives/src/lib.rs + - packages/clock/Cargo.toml + - packages/clock/src/clock/mod.rs + - packages/clock/src/conv/mod.rs + - docs/issues/open/1669-overhaul-packages/EPIC.md +--- + + + +# Issue #1790 - Move `DurationSinceUnixEpoch` from `torrust-tracker-primitives` to `torrust-tracker-clock` + +## Goal + +Move the `DurationSinceUnixEpoch` type alias from `torrust-tracker-primitives` into +`torrust-tracker-clock` — where it semantically belongs — and update all workspace consumers +to import it from `torrust-tracker-clock`. This removes the `torrust-tracker-primitives` +dependency from `torrust-tracker-clock`, preparing the crate for future extraction to a +standalone repository. + +## Background + +`DurationSinceUnixEpoch` is defined in `packages/primitives/src/lib.rs` as: + +```rust +pub type DurationSinceUnixEpoch = Duration; +``` + +It is a trivial alias for `std::time::Duration` with no tracker-specific logic. The +`torrust-tracker-clock` package is the primary user of this type: it appears in the `Clock` +trait itself (`fn now() -> DurationSinceUnixEpoch`) and in the conversion helpers +(`packages/clock/src/conv/mod.rs`). Having it live in `torrust-tracker-primitives` is an +accident of history, not a design intent. + +`torrust-tracker-clock` currently carries a `torrust-tracker-primitives` dependency solely +for this type alias. Removing it makes `torrust-tracker-clock` dependency-lighter and +prepares it for future rename/extraction (SI-09, SI-13). + +**Key implementation note**: Since `DurationSinceUnixEpoch` is a trivial type alias (both +the old and new definitions are `= std::time::Duration`), there is no type incompatibility +between `torrust_tracker_primitives::DurationSinceUnixEpoch` and +`torrust_tracker_clock::DurationSinceUnixEpoch`. All 80+ workspace files that currently +import the type from `torrust-tracker-primitives` need only a trivial import path change. + +**Backward compatibility and deprecation**: Now that `torrust-tracker-clock` no longer +depends on `torrust-tracker-primitives`, there is no circular dependency, and +`torrust-tracker-primitives` can safely depend on `torrust-tracker-clock`. Rather than +leaving a stale independent copy, `torrust-tracker-primitives` now re-exports the type +from `torrust-tracker-clock` via `#[deprecated] pub use torrust_tracker_clock::DurationSinceUnixEpoch`. +This preserves backward compatibility for external consumers while actively signalling that +they should migrate to the `torrust_tracker_clock` import path. Removal of the re-export +is deferred to a follow-up cleanup subissue of EPIC #1669. + +This issue is a subissue of EPIC [#1669](../open/1669-overhaul-packages/EPIC.md) +(Overhaul: Packages). + +## Scope + +### In Scope + +- Add `pub type DurationSinceUnixEpoch = std::time::Duration;` to `packages/clock/src/lib.rs` + (or a dedicated `types.rs` module), exported as part of the public API. +- Update `packages/clock/src/clock/mod.rs` and `packages/clock/src/conv/mod.rs` to use the + local definition instead of importing from `torrust-tracker-primitives`. +- Remove the `torrust-tracker-primitives` dependency from `packages/clock/Cargo.toml` + (it was added only for this type alias). +- Update all 80+ workspace files that import `DurationSinceUnixEpoch` from + `torrust_tracker_primitives` to import it from `torrust_tracker_clock` instead. +- Verify the workspace builds and all tests pass. +- Update `torrust-tracker-metrics` to import `DurationSinceUnixEpoch` from + `torrust-tracker-clock` instead of `torrust-tracker-primitives`, eliminating that + dependency edge entirely (see F-02). + +### Out of Scope + +- Removing `DurationSinceUnixEpoch` from `torrust-tracker-primitives`: that requires a + crates.io version bump to signal the breaking change; deferred to a separate cleanup + subissue once all consumers have migrated. +- Changes to the type itself — it stays `= std::time::Duration`. +- Extracting `torrust-tracker-clock` to a standalone repository (a separate, later subissue). +- Renaming `torrust-tracker-clock` to `torrust-clock` (tracked in SI-09, a separate subissue). + +## Implementation Plan + +Status values: `TODO`, `IN_PROGRESS`, `BLOCKED`, `DONE`. + +| ID | Status | Task | Notes / Expected Output | +| --- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | +| T1 | DONE | Define `DurationSinceUnixEpoch` in `packages/clock/src/lib.rs` | `pub type DurationSinceUnixEpoch = std::time::Duration;` | +| T2 | DONE | Update `packages/clock/src/clock/mod.rs` and `packages/clock/src/conv/mod.rs` to use the local definition | Replace `use torrust_tracker_primitives::DurationSinceUnixEpoch` with local import | +| T3 | DONE | Remove `torrust-tracker-primitives` dep from `packages/clock/Cargo.toml` | Dep entry removed; workspace build still passes | +| T4 | DONE | Update all 80+ workspace files to import `DurationSinceUnixEpoch` from `torrust_tracker_clock` instead of `torrust_tracker_primitives` | Use M1 grep to find the full file list; one-line change per file | +| T5 | DONE | Run `cargo build --workspace` and `cargo test --workspace` | Clean build and all tests pass | +| T6 | DONE | Run `linter all` | Exit code `0` | +| T7 | DONE | Update EPIC #1669 extraction ordering table: note that `torrust-tracker-clock` has no `torrust-tracker-primitives` dep | `torrust-tracker-clock` row: `torrust-tracker-primitives` dep removed | +| T8 | DONE | Update `torrust-tracker-metrics`: replace import of `DurationSinceUnixEpoch` from `torrust_tracker_primitives` with `torrust_tracker_clock`; remove `torrust-tracker-primitives` dep from its `Cargo.toml` if no longer needed | `cargo build -p torrust-tracker-metrics` succeeds; `cargo machete -p torrust-tracker-metrics` reports no unused deps | + +## Progress Tracking + +### Workflow Checkpoints + +- [x] Spec drafted in `docs/issues/drafts/` +- [x] Spec reviewed and approved by user/maintainer +- [x] GitHub issue created and issue number added to this spec +- [x] Spec moved to `docs/issues/open/` with issue number prefix +- [x] Implementation completed +- [x] Automatic verification completed (`linter all`, `cargo test --workspace`) +- [x] Manual verification scenarios executed and recorded +- [x] Acceptance criteria reviewed after implementation and updated with evidence +- [x] EPIC #1669 Active Subissues table updated to `DONE` +- [ ] PR merged +- [ ] Issue closed and spec moved to `docs/issues/closed/` + +### Progress Log + +- 2026-05-15 12:00 UTC - josecelano - Spec drafted as subissue of EPIC #1669 following + Option A decision in clock rename spec. `DurationSinceUnixEpoch` has 80+ workspace + consumers; all import from `torrust-tracker-primitives` today. +- 2026-05-18 00:00 UTC - josecelano - Spec updated to target current crate name + `torrust-tracker-clock` (Option A: proceed without SI-09 prerequisite). SI-09 prerequisite + removed; type will land as `torrust_tracker_clock::DurationSinceUnixEpoch`. +- 2026-05-18 18:30 UTC - josecelano - Implementation complete. All 77 workspace files + updated. `torrust-tracker-clock` no longer depends on `torrust-tracker-primitives`. + `torrust-tracker-metrics` now imports from `torrust-tracker-clock`. + `cargo build --workspace`, `cargo test --workspace`, and `linter all` all pass. +- 2026-05-18 20:00 UTC - josecelano - `torrust-tracker-primitives` re-export added as + `#[deprecated] pub use torrust_tracker_clock::DurationSinceUnixEpoch` for backward + compatibility. `peer.rs` migrated to import directly from `torrust_tracker_clock`. + PR #1791 opened against `develop`. + +## Acceptance Criteria + +- [x] `packages/clock/src/lib.rs` (or a submodule) exports `pub type DurationSinceUnixEpoch = std::time::Duration`. +- [x] `packages/clock/Cargo.toml` does not list `torrust-tracker-primitives` as a dependency. +- [x] No file in `packages/clock/src/` imports `DurationSinceUnixEpoch` from `torrust_tracker_primitives`. +- [x] No other workspace file imports `DurationSinceUnixEpoch` from `torrust_tracker_primitives` + (all migrated to `torrust_tracker_clock`). +- [x] `torrust-tracker-metrics` no longer lists `torrust-tracker-primitives` as a dependency + (or only lists it for non-`DurationSinceUnixEpoch` reasons). +- [x] `cargo build --workspace` succeeds with zero errors. +- [x] `cargo test --workspace` passes with zero failures. +- [x] `linter all` exits with code `0`. + +## Verification Plan + +### Automatic Checks + +- `cargo build --workspace` +- `cargo test --doc --workspace` +- `cargo test --tests --workspace --all-targets --all-features` +- `linter all` +- `cargo machete` (no unused dependencies) + +### Manual Verification Scenarios + +Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`. + +| ID | Scenario | Command / Steps | Expected Result | Status | Evidence | +| --- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------- | ------ | --------------------------------------------------------------------------------------- | +| M1 | No workspace import from `torrust_tracker_primitives` for this type | `grep -r "torrust_tracker_primitives::DurationSinceUnixEpoch" . --include="*.rs"` | Zero matches | DONE | Zero matches (only `primitives/` defines the type; no consumer imports it from there) | +| M2 | `torrust-tracker-clock` dep list is clean | `grep "torrust-tracker-primitives" packages/clock/Cargo.toml` | No output | DONE | No output confirmed | +| M3 | `torrust-tracker-clock` exports `DurationSinceUnixEpoch` | `grep "DurationSinceUnixEpoch" packages/clock/src/lib.rs` | `pub type DurationSinceUnixEpoch` found | DONE | `pub type DurationSinceUnixEpoch = std::time::Duration;` in `packages/clock/src/lib.rs` | diff --git a/packages/axum-rest-tracker-api-server/src/v1/context/torrent/resources/torrent.rs b/packages/axum-rest-tracker-api-server/src/v1/context/torrent/resources/torrent.rs index c3861a9d5..c5e5a721e 100644 --- a/packages/axum-rest-tracker-api-server/src/v1/context/torrent/resources/torrent.rs +++ b/packages/axum-rest-tracker-api-server/src/v1/context/torrent/resources/torrent.rs @@ -98,7 +98,8 @@ mod tests { use bittorrent_primitives::info_hash::InfoHash; use bittorrent_tracker_core::torrent::services::{BasicInfo, Info}; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; use super::Torrent; use crate::v1::context::torrent::resources::peer::Peer; diff --git a/packages/clock/Cargo.toml b/packages/clock/Cargo.toml index 9232ff414..3e96b4243 100644 --- a/packages/clock/Cargo.toml +++ b/packages/clock/Cargo.toml @@ -19,6 +19,4 @@ version.workspace = true chrono = { version = "0", default-features = false, features = [ "clock" ] } tracing = "0" -torrust-tracker-primitives = { version = "3.0.0-develop", path = "../primitives" } - [dev-dependencies] diff --git a/packages/clock/src/clock/mod.rs b/packages/clock/src/clock/mod.rs index 3d745585a..a46a159b3 100644 --- a/packages/clock/src/clock/mod.rs +++ b/packages/clock/src/clock/mod.rs @@ -1,9 +1,8 @@ use std::time::Duration; -use torrust_tracker_primitives::DurationSinceUnixEpoch; - use self::stopped::StoppedClock; use self::working::WorkingClock; +use crate::DurationSinceUnixEpoch; pub mod stopped; pub mod working; diff --git a/packages/clock/src/clock/stopped/mod.rs b/packages/clock/src/clock/stopped/mod.rs index 5d0b2ec4e..95e3472cb 100644 --- a/packages/clock/src/clock/stopped/mod.rs +++ b/packages/clock/src/clock/stopped/mod.rs @@ -105,8 +105,7 @@ mod tests { use std::thread; use std::time::Duration; - use torrust_tracker_primitives::DurationSinceUnixEpoch; - + use crate::DurationSinceUnixEpoch; use crate::clock::stopped::Stopped as _; use crate::clock::{Stopped, Time, Working}; @@ -167,9 +166,7 @@ mod detail { use std::cell::RefCell; use std::time::SystemTime; - use torrust_tracker_primitives::DurationSinceUnixEpoch; - - use crate::static_time; + use crate::{DurationSinceUnixEpoch, static_time}; thread_local!(pub static FIXED_TIME: RefCell = RefCell::new(get_default_fixed_time())); diff --git a/packages/clock/src/clock/working/mod.rs b/packages/clock/src/clock/working/mod.rs index 6d0b4dcf7..aa8d522fb 100644 --- a/packages/clock/src/clock/working/mod.rs +++ b/packages/clock/src/clock/working/mod.rs @@ -1,8 +1,6 @@ use std::time::SystemTime; -use torrust_tracker_primitives::DurationSinceUnixEpoch; - -use crate::clock; +use crate::{DurationSinceUnixEpoch, clock}; #[allow(clippy::module_name_repetitions)] pub struct WorkingClock; diff --git a/packages/clock/src/conv/mod.rs b/packages/clock/src/conv/mod.rs index 0ac278171..ec00acd48 100644 --- a/packages/clock/src/conv/mod.rs +++ b/packages/clock/src/conv/mod.rs @@ -1,7 +1,8 @@ use std::str::FromStr; use chrono::{DateTime, Utc}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; + +use crate::DurationSinceUnixEpoch; /// It converts a string in ISO 8601 format to a timestamp. /// @@ -50,8 +51,8 @@ pub fn convert_from_timestamp_to_datetime_utc(duration: DurationSinceUnixEpoch) #[cfg(test)] mod tests { use chrono::DateTime; - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use crate::DurationSinceUnixEpoch; use crate::conv::{ convert_from_datetime_utc_to_timestamp, convert_from_iso_8601_to_timestamp, convert_from_timestamp_to_datetime_utc, }; diff --git a/packages/clock/src/lib.rs b/packages/clock/src/lib.rs index af2fff4de..2c2195d8a 100644 --- a/packages/clock/src/lib.rs +++ b/packages/clock/src/lib.rs @@ -28,6 +28,13 @@ pub mod static_time; use tracing::instrument; +/// A duration measured from the Unix Epoch (1970-01-01 00:00:00 UTC). +/// +/// This is a type alias for [`std::time::Duration`]. It carries no +/// tracker-specific logic and lives here so that `torrust-tracker-clock` +/// has no dependency on `torrust-tracker-primitives`. +pub type DurationSinceUnixEpoch = std::time::Duration; + /// This code needs to be copied into each crate. /// Working version, for production. #[cfg(not(test))] diff --git a/packages/http-tracker-core/benches/helpers/util.rs b/packages/http-tracker-core/benches/helpers/util.rs index aa9f3c521..899c8bc4a 100644 --- a/packages/http-tracker-core/benches/helpers/util.rs +++ b/packages/http-tracker-core/benches/helpers/util.rs @@ -20,10 +20,11 @@ use bittorrent_tracker_core::whitelist::repository::in_memory::InMemoryWhitelist use futures::future::BoxFuture; use mockall::mock; use tokio_util::sync::CancellationToken; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::{Configuration, Core}; use torrust_tracker_events::sender::SendError; use torrust_tracker_primitives::peer::Peer; -use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; +use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; use torrust_tracker_test_helpers::configuration; pub struct CoreTrackerServices { diff --git a/packages/http-tracker-core/src/lib.rs b/packages/http-tracker-core/src/lib.rs index 81b6cfcba..a9943c93e 100644 --- a/packages/http-tracker-core/src/lib.rs +++ b/packages/http-tracker-core/src/lib.rs @@ -23,7 +23,8 @@ pub(crate) mod tests { use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; use bittorrent_primitives::info_hash::InfoHash; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; /// # Panics /// diff --git a/packages/http-tracker-core/src/services/scrape.rs b/packages/http-tracker-core/src/services/scrape.rs index 8504099bd..749f02f9a 100644 --- a/packages/http-tracker-core/src/services/scrape.rs +++ b/packages/http-tracker-core/src/services/scrape.rs @@ -181,9 +181,10 @@ mod tests { use bittorrent_tracker_core::whitelist::repository::in_memory::InMemoryWhitelist; use futures::future::BoxFuture; use mockall::mock; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::Configuration; use torrust_tracker_events::sender::SendError; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; use crate::event::Event; use crate::tests::sample_info_hash; diff --git a/packages/http-tracker-core/src/statistics/event/handler.rs b/packages/http-tracker-core/src/statistics/event/handler.rs index da9f63cc1..73e71c4e5 100644 --- a/packages/http-tracker-core/src/statistics/event/handler.rs +++ b/packages/http-tracker-core/src/statistics/event/handler.rs @@ -1,8 +1,8 @@ use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::{LabelSet, LabelValue}; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::Event; use crate::statistics::HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL; diff --git a/packages/http-tracker-core/src/statistics/metrics.rs b/packages/http-tracker-core/src/statistics/metrics.rs index 00d09b803..ee12f32c2 100644 --- a/packages/http-tracker-core/src/statistics/metrics.rs +++ b/packages/http-tracker-core/src/statistics/metrics.rs @@ -1,10 +1,10 @@ use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::aggregate::sum::Sum; use torrust_tracker_metrics::metric_collection::{Error, MetricCollection}; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::statistics::HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL; diff --git a/packages/http-tracker-core/src/statistics/repository.rs b/packages/http-tracker-core/src/statistics/repository.rs index ea027f5c6..718735ff0 100644 --- a/packages/http-tracker-core/src/statistics/repository.rs +++ b/packages/http-tracker-core/src/statistics/repository.rs @@ -1,10 +1,10 @@ use std::sync::Arc; use tokio::sync::{RwLock, RwLockReadGuard}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::Error; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::describe_metrics; use super::metrics::Metrics; diff --git a/packages/metrics/Cargo.toml b/packages/metrics/Cargo.toml index 0c1b056ac..548ffa698 100644 --- a/packages/metrics/Cargo.toml +++ b/packages/metrics/Cargo.toml @@ -21,7 +21,7 @@ openmetrics-parser = "0.4.4" serde = { version = "1", features = [ "derive" ] } serde_json = "1.0.140" thiserror = "2" -torrust-tracker-primitives = { version = "3.0.0-develop", path = "../primitives" } +torrust-tracker-clock = { version = "3.0.0-develop", path = "../clock" } tracing = "0.1.41" [dev-dependencies] diff --git a/packages/metrics/src/metric/aggregate/avg.rs b/packages/metrics/src/metric/aggregate/avg.rs index 55322fb2b..595ecbee0 100644 --- a/packages/metrics/src/metric/aggregate/avg.rs +++ b/packages/metrics/src/metric/aggregate/avg.rs @@ -46,7 +46,7 @@ impl Avg for Metric { #[cfg(test)] mod tests { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::gauge::Gauge; diff --git a/packages/metrics/src/metric/aggregate/sum.rs b/packages/metrics/src/metric/aggregate/sum.rs index 30c2819b7..578babd6e 100644 --- a/packages/metrics/src/metric/aggregate/sum.rs +++ b/packages/metrics/src/metric/aggregate/sum.rs @@ -35,7 +35,7 @@ impl Sum for Metric { #[cfg(test)] mod tests { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::gauge::Gauge; diff --git a/packages/metrics/src/metric/mod.rs b/packages/metrics/src/metric/mod.rs index 6bc1a6075..19b9bb22d 100644 --- a/packages/metrics/src/metric/mod.rs +++ b/packages/metrics/src/metric/mod.rs @@ -3,7 +3,7 @@ pub mod description; pub mod name; use serde::{Deserialize, Serialize}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::counter::Counter; use super::label::LabelSet; diff --git a/packages/metrics/src/metric_collection/aggregate/avg.rs b/packages/metrics/src/metric_collection/aggregate/avg.rs index 2e1041ee3..ba8ca173b 100644 --- a/packages/metrics/src/metric_collection/aggregate/avg.rs +++ b/packages/metrics/src/metric_collection/aggregate/avg.rs @@ -40,7 +40,7 @@ mod tests { mod it_should_allow_averaging_all_metric_samples_containing_some_given_labels { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::label::LabelValue; use crate::label_name; diff --git a/packages/metrics/src/metric_collection/aggregate/sum.rs b/packages/metrics/src/metric_collection/aggregate/sum.rs index 8f5a362dc..b041672c1 100644 --- a/packages/metrics/src/metric_collection/aggregate/sum.rs +++ b/packages/metrics/src/metric_collection/aggregate/sum.rs @@ -43,7 +43,7 @@ mod tests { mod it_should_allow_summing_all_metric_samples_containing_some_given_labels { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::label::LabelValue; use crate::label_name; diff --git a/packages/metrics/src/metric_collection/kind_collection.rs b/packages/metrics/src/metric_collection/kind_collection.rs index 6fea32028..2a9c24770 100644 --- a/packages/metrics/src/metric_collection/kind_collection.rs +++ b/packages/metrics/src/metric_collection/kind_collection.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::gauge::Gauge; diff --git a/packages/metrics/src/metric_collection/mod.rs b/packages/metrics/src/metric_collection/mod.rs index 165ee8d06..5a58d419c 100644 --- a/packages/metrics/src/metric_collection/mod.rs +++ b/packages/metrics/src/metric_collection/mod.rs @@ -8,7 +8,7 @@ use std::collections::HashSet; pub use error::Error; pub use kind_collection::MetricKindCollection; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::counter::Counter; use super::gauge::Gauge; diff --git a/packages/metrics/src/metric_collection/prometheus.rs b/packages/metrics/src/metric_collection/prometheus.rs index ce658d62a..ce7b19d25 100644 --- a/packages/metrics/src/metric_collection/prometheus.rs +++ b/packages/metrics/src/metric_collection/prometheus.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use std::sync::Arc; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::gauge::Gauge; @@ -299,7 +299,7 @@ mod tests { } mod stage3_conversion { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use super::super::ParsedExposition; use crate::counter::Counter; @@ -354,7 +354,7 @@ mod tests { } mod prometheus_timestamp { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use super::super::parse_prometheus_timestamp; @@ -418,7 +418,7 @@ mod tests { } mod prometheus_deserialization { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use super::super::build_metric_collection; use crate::counter::Counter; diff --git a/packages/metrics/src/metric_collection/serde.rs b/packages/metrics/src/metric_collection/serde.rs index d2347d3fe..d6669da1c 100644 --- a/packages/metrics/src/metric_collection/serde.rs +++ b/packages/metrics/src/metric_collection/serde.rs @@ -73,7 +73,7 @@ mod tests { use pretty_assertions::assert_eq; use serde::Serialize; use serde::ser::{self, Impossible, SerializeSeq}; - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::gauge::Gauge; diff --git a/packages/metrics/src/prometheus.rs b/packages/metrics/src/prometheus.rs index 9b0645bde..32ac37651 100644 --- a/packages/metrics/src/prometheus.rs +++ b/packages/metrics/src/prometheus.rs @@ -1,4 +1,4 @@ -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::metric_collection::Error as MetricCollectionError; use crate::sample_collection::Error as SampleCollectionError; diff --git a/packages/metrics/src/sample.rs b/packages/metrics/src/sample.rs index 0be904a57..8fc4f56b1 100644 --- a/packages/metrics/src/sample.rs +++ b/packages/metrics/src/sample.rs @@ -1,6 +1,6 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Deserializer, Serialize, Serializer, de}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::counter::Counter; use super::gauge::Gauge; @@ -188,7 +188,7 @@ where #[cfg(test)] mod tests { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use super::*; @@ -264,7 +264,7 @@ mod tests { } mod for_counter_type_sample { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::label::LabelSet; use crate::prometheus::PrometheusSerializable; @@ -323,7 +323,7 @@ mod tests { } } mod for_gauge_type_sample { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::label::LabelSet; use crate::prometheus::PrometheusSerializable; @@ -403,7 +403,7 @@ mod tests { mod serialization_to_json { use pretty_assertions::assert_eq; use serde_json::json; - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::label::LabelSet; use crate::sample::Sample; diff --git a/packages/metrics/src/sample_collection.rs b/packages/metrics/src/sample_collection.rs index 688ccd0ef..bab4cf5ad 100644 --- a/packages/metrics/src/sample_collection.rs +++ b/packages/metrics/src/sample_collection.rs @@ -3,7 +3,7 @@ use std::collections::hash_map::Iter; use std::fmt::Write as _; use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::counter::Counter; use super::gauge::Gauge; @@ -168,7 +168,7 @@ impl PrometheusSerializable for SampleCollection { #[cfg(test)] mod tests { - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::counter::Counter; use crate::label::LabelSet; diff --git a/packages/primitives/Cargo.toml b/packages/primitives/Cargo.toml index d6871d8a3..b19b3ad0e 100644 --- a/packages/primitives/Cargo.toml +++ b/packages/primitives/Cargo.toml @@ -23,6 +23,7 @@ serde = { version = "1", features = [ "derive" ] } tdyne-peer-id = "1" tdyne-peer-id-registry = "0" thiserror = "2" +torrust-tracker-clock = { version = "3.0.0-develop", path = "../clock" } torrust-tracker-configuration = { version = "3.0.0-develop", path = "../configuration" } url = "2.5.4" diff --git a/packages/primitives/src/lib.rs b/packages/primitives/src/lib.rs index 59ab7457b..20b7c950d 100644 --- a/packages/primitives/src/lib.rs +++ b/packages/primitives/src/lib.rs @@ -14,17 +14,24 @@ pub mod service_binding; pub mod swarm_metadata; use std::collections::BTreeMap; -use std::time::Duration; - -use bittorrent_primitives::info_hash::InfoHash; - -/// Duration since the Unix Epoch. -pub type DurationSinceUnixEpoch = Duration; pub use announce::{AnnounceData, AnnounceEvent}; +use bittorrent_primitives::info_hash::InfoHash; pub use number_of_bytes::NumberOfBytes; pub use peer_id::{PeerClient, PeerId}; pub use scrape::ScrapeData; +/// Duration since the Unix Epoch. +/// +/// **Deprecated**: import from [`torrust_tracker_clock::DurationSinceUnixEpoch`] instead. +/// This re-export is kept for backwards compatibility and will be removed in a +/// future release. Removal is tracked as a follow-up cleanup subissue of EPIC +/// [#1669](https://github.com/torrust/torrust-tracker/issues/1669). +#[deprecated( + since = "3.0.0-develop", + note = "import `DurationSinceUnixEpoch` from `torrust_tracker_clock` instead; \ + this re-export will be removed in a future release (see EPIC #1669)" +)] +pub use torrust_tracker_clock::DurationSinceUnixEpoch; pub type NumberOfDownloads = u32; pub type NumberOfDownloadsBTreeMap = BTreeMap; diff --git a/packages/primitives/src/peer.rs b/packages/primitives/src/peer.rs index 6fca99270..1b85ca5eb 100644 --- a/packages/primitives/src/peer.rs +++ b/packages/primitives/src/peer.rs @@ -8,7 +8,7 @@ //! use std::net::SocketAddr; //! use std::net::IpAddr; //! use std::net::Ipv4Addr; -//! use torrust_tracker_primitives::DurationSinceUnixEpoch; +//! use torrust_tracker_clock::DurationSinceUnixEpoch; //! //! //! peer::Peer { @@ -29,8 +29,9 @@ use std::str::FromStr; use std::sync::Arc; use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; -use crate::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; +use crate::{AnnounceEvent, NumberOfBytes, PeerId}; pub type PeerAnnouncement = Peer; @@ -95,7 +96,7 @@ pub enum ParsePeerRoleError { /// use std::net::SocketAddr; /// use std::net::IpAddr; /// use std::net::Ipv4Addr; -/// use torrust_tracker_primitives::DurationSinceUnixEpoch; +/// use torrust_tracker_clock::DurationSinceUnixEpoch; /// /// /// peer::Peer { @@ -493,8 +494,10 @@ impl FromIterator for Vec

{ pub mod fixture { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use super::{Id, Peer, PeerId}; - use crate::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes}; + use crate::{AnnounceEvent, NumberOfBytes}; #[derive(PartialEq, Debug)] diff --git a/packages/swarm-coordination-registry/src/lib.rs b/packages/swarm-coordination-registry/src/lib.rs index 2ec520aeb..6a313ec43 100644 --- a/packages/swarm-coordination-registry/src/lib.rs +++ b/packages/swarm-coordination-registry/src/lib.rs @@ -29,8 +29,9 @@ pub(crate) mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use bittorrent_primitives::info_hash::InfoHash; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::Peer; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; /// # Panics /// diff --git a/packages/swarm-coordination-registry/src/statistics/activity_metrics_updater.rs b/packages/swarm-coordination-registry/src/statistics/activity_metrics_updater.rs index cf814e810..ee9aa2848 100644 --- a/packages/swarm-coordination-registry/src/statistics/activity_metrics_updater.rs +++ b/packages/swarm-coordination-registry/src/statistics/activity_metrics_updater.rs @@ -3,10 +3,10 @@ use std::sync::Arc; use chrono::Utc; use tokio::task::JoinHandle; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::clock::Time; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use tracing::instrument; use super::repository::Repository; diff --git a/packages/swarm-coordination-registry/src/statistics/event/handler.rs b/packages/swarm-coordination-registry/src/statistics/event/handler.rs index df1a3c238..238086909 100644 --- a/packages/swarm-coordination-registry/src/statistics/event/handler.rs +++ b/packages/swarm-coordination-registry/src/statistics/event/handler.rs @@ -1,8 +1,8 @@ use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::{LabelSet, LabelValue}; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::Peer; use crate::event::Event; diff --git a/packages/swarm-coordination-registry/src/statistics/metrics.rs b/packages/swarm-coordination-registry/src/statistics/metrics.rs index d62a1ba6e..64686e9e6 100644 --- a/packages/swarm-coordination-registry/src/statistics/metrics.rs +++ b/packages/swarm-coordination-registry/src/statistics/metrics.rs @@ -1,8 +1,8 @@ use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::{Error, MetricCollection}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; /// Metrics collected by the torrent repository. #[derive(Debug, Clone, PartialEq, Default, Serialize)] diff --git a/packages/swarm-coordination-registry/src/statistics/repository.rs b/packages/swarm-coordination-registry/src/statistics/repository.rs index fe1292d00..127dcf147 100644 --- a/packages/swarm-coordination-registry/src/statistics/repository.rs +++ b/packages/swarm-coordination-registry/src/statistics/repository.rs @@ -1,10 +1,10 @@ use std::sync::Arc; use tokio::sync::{RwLock, RwLockReadGuard}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::Error; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::describe_metrics; use super::metrics::Metrics; diff --git a/packages/swarm-coordination-registry/src/swarm/coordinator.rs b/packages/swarm-coordination-registry/src/swarm/coordinator.rs index 5609f2f8d..a2be882d8 100644 --- a/packages/swarm-coordination-registry/src/swarm/coordinator.rs +++ b/packages/swarm-coordination-registry/src/swarm/coordinator.rs @@ -5,10 +5,11 @@ use std::net::SocketAddr; use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::AnnounceEvent; use torrust_tracker_primitives::peer::{self, Peer, PeerAnnouncement}; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch}; use crate::event::Event; use crate::event::sender::Sender; @@ -320,9 +321,10 @@ mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::PeerId; use torrust_tracker_primitives::peer::fixture::PeerBuilder; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; - use torrust_tracker_primitives::{DurationSinceUnixEpoch, PeerId}; use crate::swarm::coordinator::Coordinator; use crate::tests::sample_info_hash; @@ -907,8 +909,8 @@ mod tests { use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::AnnounceEvent::Started; - use torrust_tracker_primitives::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::fixture::PeerBuilder; use crate::event::Event; diff --git a/packages/swarm-coordination-registry/src/swarm/registry.rs b/packages/swarm-coordination-registry/src/swarm/registry.rs index 417953beb..2c1e3b471 100644 --- a/packages/swarm-coordination-registry/src/swarm/registry.rs +++ b/packages/swarm-coordination-registry/src/swarm/registry.rs @@ -3,11 +3,12 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; use crossbeam_skiplist::SkipMap; use tokio::sync::Mutex; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::conv::convert_from_timestamp_to_datetime_utc; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use crate::CoordinatorHandle; use crate::event::Event; @@ -613,8 +614,9 @@ mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::Peer; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes}; use crate::swarm::registry::Registry; use crate::swarm::registry::tests::the_swarm_repository::numeric_peer_id; @@ -673,9 +675,10 @@ mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TORRENT_PEERS_LIMIT; use torrust_tracker_primitives::peer::Peer; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes}; use crate::swarm::registry::Registry; use crate::swarm::registry::tests::the_swarm_repository::numeric_peer_id; @@ -752,8 +755,8 @@ mod tests { use std::time::Duration; use bittorrent_primitives::info_hash::InfoHash; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; - use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::swarm::registry::Registry; use crate::tests::{sample_info_hash, sample_peer}; @@ -1180,7 +1183,7 @@ mod tests { mod it_should_count_peerless_torrents { use std::sync::Arc; - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::swarm::registry::Registry; use crate::tests::{sample_info_hash, sample_peer}; @@ -1347,7 +1350,7 @@ mod tests { use std::sync::Arc; - use torrust_tracker_primitives::DurationSinceUnixEpoch; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::fixture::PeerBuilder; use crate::event::Event; diff --git a/packages/torrent-repository-benchmarking/benches/helpers/utils.rs b/packages/torrent-repository-benchmarking/benches/helpers/utils.rs index 0d8d920e2..2452fe554 100644 --- a/packages/torrent-repository-benchmarking/benches/helpers/utils.rs +++ b/packages/torrent-repository-benchmarking/benches/helpers/utils.rs @@ -2,8 +2,9 @@ use std::collections::HashSet; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::Peer; -use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; +use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; pub const DEFAULT_PEER: Peer = Peer { peer_id: PeerId([0; 20]), diff --git a/packages/torrent-repository-benchmarking/src/entry/mod.rs b/packages/torrent-repository-benchmarking/src/entry/mod.rs index 33ddfcba0..2ff07377c 100644 --- a/packages/torrent-repository-benchmarking/src/entry/mod.rs +++ b/packages/torrent-repository-benchmarking/src/entry/mod.rs @@ -2,9 +2,10 @@ use std::fmt::Debug; use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use self::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/entry/mutex_parking_lot.rs b/packages/torrent-repository-benchmarking/src/entry/mutex_parking_lot.rs index c84f1233f..e48ac3e9f 100644 --- a/packages/torrent-repository-benchmarking/src/entry/mutex_parking_lot.rs +++ b/packages/torrent-repository-benchmarking/src/entry/mutex_parking_lot.rs @@ -1,9 +1,10 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use super::{Entry, EntrySync}; use crate::{EntryMutexParkingLot, EntrySingle}; diff --git a/packages/torrent-repository-benchmarking/src/entry/mutex_std.rs b/packages/torrent-repository-benchmarking/src/entry/mutex_std.rs index fd25e999c..ffe24cb72 100644 --- a/packages/torrent-repository-benchmarking/src/entry/mutex_std.rs +++ b/packages/torrent-repository-benchmarking/src/entry/mutex_std.rs @@ -1,9 +1,10 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use super::{Entry, EntrySync}; use crate::{EntryMutexStd, EntrySingle}; diff --git a/packages/torrent-repository-benchmarking/src/entry/mutex_tokio.rs b/packages/torrent-repository-benchmarking/src/entry/mutex_tokio.rs index d9e7d5191..e86b4552d 100644 --- a/packages/torrent-repository-benchmarking/src/entry/mutex_tokio.rs +++ b/packages/torrent-repository-benchmarking/src/entry/mutex_tokio.rs @@ -1,9 +1,10 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use super::{Entry, EntryAsync}; use crate::{EntryMutexTokio, EntrySingle}; diff --git a/packages/torrent-repository-benchmarking/src/entry/peer_list.rs b/packages/torrent-repository-benchmarking/src/entry/peer_list.rs index a7f143c8f..f2f5a22a3 100644 --- a/packages/torrent-repository-benchmarking/src/entry/peer_list.rs +++ b/packages/torrent-repository-benchmarking/src/entry/peer_list.rs @@ -2,7 +2,8 @@ use std::net::SocketAddr; use std::sync::Arc; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, PeerId, peer}; +use torrust_tracker_clock::DurationSinceUnixEpoch; +use torrust_tracker_primitives::{PeerId, peer}; // code-review: the current implementation uses the peer Id as the ``BTreeMap`` // key. That would allow adding two identical peers except for the Id. @@ -89,8 +90,9 @@ mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::PeerId; use torrust_tracker_primitives::peer::fixture::PeerBuilder; - use torrust_tracker_primitives::{DurationSinceUnixEpoch, PeerId}; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/entry/rw_lock_parking_lot.rs b/packages/torrent-repository-benchmarking/src/entry/rw_lock_parking_lot.rs index e6f937a09..663a8bd56 100644 --- a/packages/torrent-repository-benchmarking/src/entry/rw_lock_parking_lot.rs +++ b/packages/torrent-repository-benchmarking/src/entry/rw_lock_parking_lot.rs @@ -1,9 +1,10 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use super::{Entry, EntrySync}; use crate::{EntryRwLockParkingLot, EntrySingle}; diff --git a/packages/torrent-repository-benchmarking/src/entry/single.rs b/packages/torrent-repository-benchmarking/src/entry/single.rs index d3bafa76c..abf5d12c4 100644 --- a/packages/torrent-repository-benchmarking/src/entry/single.rs +++ b/packages/torrent-repository-benchmarking/src/entry/single.rs @@ -1,10 +1,11 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::AnnounceEvent; use torrust_tracker_primitives::peer::{self}; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch}; use super::Entry; use crate::EntrySingle; diff --git a/packages/torrent-repository-benchmarking/src/repository/dash_map_mutex_std.rs b/packages/torrent-repository-benchmarking/src/repository/dash_map_mutex_std.rs index 1ee682c60..be0e9fa30 100644 --- a/packages/torrent-repository-benchmarking/src/repository/dash_map_mutex_std.rs +++ b/packages/torrent-repository-benchmarking/src/repository/dash_map_mutex_std.rs @@ -2,10 +2,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; use dashmap::DashMap; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::Repository; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/repository/mod.rs b/packages/torrent-repository-benchmarking/src/repository/mod.rs index aca94629f..08d06e4e9 100644 --- a/packages/torrent-repository-benchmarking/src/repository/mod.rs +++ b/packages/torrent-repository-benchmarking/src/repository/mod.rs @@ -1,8 +1,9 @@ use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; pub mod dash_map_mutex_std; pub mod rw_lock_std; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std.rs index 57a2416f1..950011fd3 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std.rs @@ -1,8 +1,9 @@ use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::Repository; use crate::entry::Entry; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_std.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_std.rs index 762f3b211..e9a7f1ce8 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_std.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_std.rs @@ -1,10 +1,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::Repository; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_tokio.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_tokio.rs index b2ace0e76..2203c088f 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_tokio.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_std_mutex_tokio.rs @@ -5,10 +5,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; use futures::future::join_all; use futures::{Future, FutureExt}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::RepositoryAsync; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio.rs index 17cbd3174..5cf5e0a56 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio.rs @@ -1,8 +1,9 @@ use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::RepositoryAsync; use crate::entry::Entry; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_std.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_std.rs index 1932d46f8..be667cd8e 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_std.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_std.rs @@ -1,10 +1,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::RepositoryAsync; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_tokio.rs b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_tokio.rs index cb057124c..b8fac3810 100644 --- a/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_tokio.rs +++ b/packages/torrent-repository-benchmarking/src/repository/rw_lock_tokio_mutex_tokio.rs @@ -1,10 +1,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::RepositoryAsync; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/src/repository/skip_map_mutex_std.rs b/packages/torrent-repository-benchmarking/src/repository/skip_map_mutex_std.rs index 67d3dfb82..8851b4c49 100644 --- a/packages/torrent-repository-benchmarking/src/repository/skip_map_mutex_std.rs +++ b/packages/torrent-repository-benchmarking/src/repository/skip_map_mutex_std.rs @@ -2,10 +2,11 @@ use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; use crossbeam_skiplist::SkipMap; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use super::Repository; use crate::entry::peer_list::PeerList; diff --git a/packages/torrent-repository-benchmarking/tests/common/repo.rs b/packages/torrent-repository-benchmarking/tests/common/repo.rs index d2c686b85..6fa7c0ddc 100644 --- a/packages/torrent-repository-benchmarking/tests/common/repo.rs +++ b/packages/torrent-repository-benchmarking/tests/common/repo.rs @@ -1,8 +1,9 @@ use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use torrust_tracker_torrent_repository_benchmarking::repository::{Repository as _, RepositoryAsync as _}; use torrust_tracker_torrent_repository_benchmarking::{ EntrySingle, TorrentsDashMapMutexStd, TorrentsRwLockStd, TorrentsRwLockStdMutexStd, TorrentsRwLockStdMutexTokio, diff --git a/packages/torrent-repository-benchmarking/tests/common/torrent.rs b/packages/torrent-repository-benchmarking/tests/common/torrent.rs index 335089203..8bed54ff1 100644 --- a/packages/torrent-repository-benchmarking/tests/common/torrent.rs +++ b/packages/torrent-repository-benchmarking/tests/common/torrent.rs @@ -1,9 +1,10 @@ use std::net::SocketAddr; use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::TrackerPolicy; +use torrust_tracker_primitives::peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, peer}; use torrust_tracker_torrent_repository_benchmarking::entry::{Entry as _, EntryAsync as _, EntrySync as _}; use torrust_tracker_torrent_repository_benchmarking::{ EntryMutexParkingLot, EntryMutexStd, EntryMutexTokio, EntryRwLockParkingLot, EntrySingle, diff --git a/packages/tracker-core/src/announce_handler.rs b/packages/tracker-core/src/announce_handler.rs index d6d32ac59..435b3c05e 100644 --- a/packages/tracker-core/src/announce_handler.rs +++ b/packages/tracker-core/src/announce_handler.rs @@ -19,7 +19,7 @@ //! use std::str::FromStr; //! //! use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; -//! use torrust_tracker_primitives::DurationSinceUnixEpoch; +//! use torrust_tracker_clock::DurationSinceUnixEpoch; //! use torrust_tracker_primitives::peer; //! use bittorrent_primitives::info_hash::InfoHash; //! @@ -282,8 +282,9 @@ mod tests { use std::str::FromStr; use std::sync::Arc; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_primitives::peer::Peer; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; use torrust_tracker_test_helpers::configuration; use crate::announce_handler::AnnounceHandler; diff --git a/packages/tracker-core/src/authentication/handler.rs b/packages/tracker-core/src/authentication/handler.rs index 6410847cd..b8fc2cfd0 100644 --- a/packages/tracker-core/src/authentication/handler.rs +++ b/packages/tracker-core/src/authentication/handler.rs @@ -9,9 +9,9 @@ use std::sync::Arc; use std::time::Duration; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::clock::Time; use torrust_tracker_located_error::Located; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::key::repository::in_memory::InMemoryKeyRepository; use super::key::repository::persisted::DatabaseKeyRepository; diff --git a/packages/tracker-core/src/authentication/key/mod.rs b/packages/tracker-core/src/authentication/key/mod.rs index ce65385ce..ff30f2b6f 100644 --- a/packages/tracker-core/src/authentication/key/mod.rs +++ b/packages/tracker-core/src/authentication/key/mod.rs @@ -30,7 +30,7 @@ //! //! ```rust //! use bittorrent_tracker_core::authentication::Key; -//! use torrust_tracker_primitives::DurationSinceUnixEpoch; +//! use torrust_tracker_clock::DurationSinceUnixEpoch; //! //! pub struct PeerKey { //! /// A random 32-character authentication token (e.g., `YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ`) @@ -48,9 +48,9 @@ use std::sync::Arc; use std::time::Duration; use thiserror::Error; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::clock::Time; use torrust_tracker_located_error::{DynError, LocatedError}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::CurrentClock; diff --git a/packages/tracker-core/src/authentication/key/peer_key.rs b/packages/tracker-core/src/authentication/key/peer_key.rs index 6e9dfdf98..6fe0eebd1 100644 --- a/packages/tracker-core/src/authentication/key/peer_key.rs +++ b/packages/tracker-core/src/authentication/key/peer_key.rs @@ -16,8 +16,8 @@ use rand::distr::Alphanumeric; use rand::{RngExt, rng}; use serde::{Deserialize, Serialize}; use thiserror::Error; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::conv::convert_from_timestamp_to_datetime_utc; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::AUTH_KEY_LENGTH; diff --git a/packages/tracker-core/src/databases/driver/mysql/auth_key_store.rs b/packages/tracker-core/src/databases/driver/mysql/auth_key_store.rs index f9faca074..682d75075 100644 --- a/packages/tracker-core/src/databases/driver/mysql/auth_key_store.rs +++ b/packages/tracker-core/src/databases/driver/mysql/auth_key_store.rs @@ -1,6 +1,6 @@ use ::sqlx::Row; use async_trait::async_trait; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::{DRIVER, Mysql}; use crate::authentication::{self, Key}; diff --git a/packages/tracker-core/src/databases/driver/postgres/auth_key_store.rs b/packages/tracker-core/src/databases/driver/postgres/auth_key_store.rs index 898f44c8d..ff94a91b0 100644 --- a/packages/tracker-core/src/databases/driver/postgres/auth_key_store.rs +++ b/packages/tracker-core/src/databases/driver/postgres/auth_key_store.rs @@ -1,6 +1,6 @@ use ::sqlx::Row; use async_trait::async_trait; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::{DRIVER, Postgres}; use crate::authentication::{self, Key}; diff --git a/packages/tracker-core/src/databases/driver/sqlite/auth_key_store.rs b/packages/tracker-core/src/databases/driver/sqlite/auth_key_store.rs index 5a3c4486d..d0147f3b0 100644 --- a/packages/tracker-core/src/databases/driver/sqlite/auth_key_store.rs +++ b/packages/tracker-core/src/databases/driver/sqlite/auth_key_store.rs @@ -2,7 +2,7 @@ use std::panic::Location; use ::sqlx::Row; use async_trait::async_trait; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use super::{DRIVER, Sqlite}; use crate::authentication::{self, Key}; diff --git a/packages/tracker-core/src/statistics/event/handler.rs b/packages/tracker-core/src/statistics/event/handler.rs index 820f5117b..ff70ea975 100644 --- a/packages/tracker-core/src/statistics/event/handler.rs +++ b/packages/tracker-core/src/statistics/event/handler.rs @@ -1,8 +1,8 @@ use std::sync::Arc; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use torrust_tracker_swarm_coordination_registry::event::Event; use crate::statistics::TRACKER_CORE_PERSISTENT_TORRENTS_DOWNLOADS_TOTAL; diff --git a/packages/tracker-core/src/statistics/metrics.rs b/packages/tracker-core/src/statistics/metrics.rs index a5caaf1cf..8925dc2cd 100644 --- a/packages/tracker-core/src/statistics/metrics.rs +++ b/packages/tracker-core/src/statistics/metrics.rs @@ -1,8 +1,8 @@ use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::{Error, MetricCollection}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; /// Metrics collected by the torrent repository. #[derive(Debug, Clone, PartialEq, Default, Serialize)] diff --git a/packages/tracker-core/src/statistics/persisted/mod.rs b/packages/tracker-core/src/statistics/persisted/mod.rs index 8ad083bc7..0b108e3fc 100644 --- a/packages/tracker-core/src/statistics/persisted/mod.rs +++ b/packages/tracker-core/src/statistics/persisted/mod.rs @@ -3,9 +3,9 @@ pub mod downloads; use std::sync::Arc; use thiserror::Error; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::{metric_collection, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::TRACKER_CORE_PERSISTENT_TORRENTS_DOWNLOADS_TOTAL; use super::repository::Repository; diff --git a/packages/tracker-core/src/statistics/repository.rs b/packages/tracker-core/src/statistics/repository.rs index 65ed64f35..5ccb62d2e 100644 --- a/packages/tracker-core/src/statistics/repository.rs +++ b/packages/tracker-core/src/statistics/repository.rs @@ -1,11 +1,11 @@ use std::sync::Arc; use tokio::sync::{RwLock, RwLockReadGuard}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::Error; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::metrics::Metrics; use super::{TRACKER_CORE_PERSISTENT_TORRENTS_DOWNLOADS_TOTAL, describe_metrics}; diff --git a/packages/tracker-core/src/test_helpers.rs b/packages/tracker-core/src/test_helpers.rs index cf4095701..74bc8c027 100644 --- a/packages/tracker-core/src/test_helpers.rs +++ b/packages/tracker-core/src/test_helpers.rs @@ -7,11 +7,12 @@ pub(crate) mod tests { use bittorrent_primitives::info_hash::InfoHash; use rand::RngExt; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::Configuration; #[cfg(test)] use torrust_tracker_configuration::Core; use torrust_tracker_primitives::peer::Peer; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; #[cfg(test)] use torrust_tracker_test_helpers::configuration::ephemeral_sqlite_database; diff --git a/packages/tracker-core/src/torrent/manager.rs b/packages/tracker-core/src/torrent/manager.rs index eac37522c..fc4bf314d 100644 --- a/packages/tracker-core/src/torrent/manager.rs +++ b/packages/tracker-core/src/torrent/manager.rs @@ -2,9 +2,9 @@ use std::sync::Arc; use std::time::Duration; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::clock::Time; use torrust_tracker_configuration::Core; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::repository::in_memory::InMemoryTorrentRepository; use crate::statistics::persisted::downloads::DatabaseDownloadsMetricRepository; @@ -222,9 +222,9 @@ mod tests { use std::time::Duration; use bittorrent_primitives::info_hash::InfoHash; + use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_clock::clock::stopped::Stopped; use torrust_tracker_clock::clock::{self}; - use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::test_helpers::tests::{ephemeral_configuration, sample_info_hash, sample_peer}; use crate::torrent::manager::tests::{initialize_torrents_manager, initialize_torrents_manager_with}; diff --git a/packages/tracker-core/src/torrent/mod.rs b/packages/tracker-core/src/torrent/mod.rs index fec5d1640..143e93586 100644 --- a/packages/tracker-core/src/torrent/mod.rs +++ b/packages/tracker-core/src/torrent/mod.rs @@ -105,7 +105,7 @@ //! ```rust,no_run //! use std::net::SocketAddr; //! use torrust_tracker_primitives::PeerId; -//! use torrust_tracker_primitives::DurationSinceUnixEpoch; +//! use torrust_tracker_clock::DurationSinceUnixEpoch; //! use torrust_tracker_primitives::NumberOfBytes; //! use torrust_tracker_primitives::AnnounceEvent; //! diff --git a/packages/tracker-core/src/torrent/repository/in_memory.rs b/packages/tracker-core/src/torrent/repository/in_memory.rs index c4c3ed406..356330399 100644 --- a/packages/tracker-core/src/torrent/repository/in_memory.rs +++ b/packages/tracker-core/src/torrent/repository/in_memory.rs @@ -3,10 +3,11 @@ use std::cmp::max; use std::sync::Arc; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::{TORRENT_PEERS_LIMIT, TrackerPolicy}; use torrust_tracker_primitives::pagination::Pagination; use torrust_tracker_primitives::swarm_metadata::{AggregateActiveSwarmMetadata, SwarmMetadata}; -use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; +use torrust_tracker_primitives::{NumberOfDownloads, NumberOfDownloadsBTreeMap, peer}; use torrust_tracker_swarm_coordination_registry::{CoordinatorHandle, Registry}; /// In-memory repository for torrent entries. diff --git a/packages/tracker-core/src/torrent/services.rs b/packages/tracker-core/src/torrent/services.rs index b1df0fb92..1c33ad9d7 100644 --- a/packages/tracker-core/src/torrent/services.rs +++ b/packages/tracker-core/src/torrent/services.rs @@ -206,7 +206,8 @@ pub async fn get_torrents( mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; fn sample_peer() -> peer::Peer { peer::Peer { diff --git a/packages/tracker-core/tests/common/fixtures.rs b/packages/tracker-core/tests/common/fixtures.rs index 1a94b68ca..a2bf609f6 100644 --- a/packages/tracker-core/tests/common/fixtures.rs +++ b/packages/tracker-core/tests/common/fixtures.rs @@ -2,9 +2,10 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::str::FromStr; use bittorrent_primitives::info_hash::InfoHash; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::Core; use torrust_tracker_primitives::peer::Peer; -use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId}; +use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId}; use torrust_tracker_test_helpers::configuration::ephemeral_sqlite_database; /// # Panics diff --git a/packages/tracker-core/tests/common/test_env.rs b/packages/tracker-core/tests/common/test_env.rs index 50c13bfc0..3c51cdbd2 100644 --- a/packages/tracker-core/tests/common/test_env.rs +++ b/packages/tracker-core/tests/common/test_env.rs @@ -7,12 +7,13 @@ use bittorrent_tracker_core::container::TrackerCoreContainer; use bittorrent_tracker_core::statistics::persisted::load_persisted_metrics; use tokio::task::yield_now; use tokio_util::sync::CancellationToken; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_configuration::Core; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_primitives::peer::Peer; use torrust_tracker_primitives::swarm_metadata::SwarmMetadata; -use torrust_tracker_primitives::{AnnounceData, AnnounceEvent, DurationSinceUnixEpoch, ScrapeData}; +use torrust_tracker_primitives::{AnnounceData, AnnounceEvent, ScrapeData}; use torrust_tracker_swarm_coordination_registry::container::SwarmCoordinationRegistryContainer; pub struct TestEnv { diff --git a/packages/udp-tracker-core/src/statistics/event/handler.rs b/packages/udp-tracker-core/src/statistics/event/handler.rs index 14be65bdc..5b2269873 100644 --- a/packages/udp-tracker-core/src/statistics/event/handler.rs +++ b/packages/udp-tracker-core/src/statistics/event/handler.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::{LabelSet, LabelValue}; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::Event; use crate::statistics::UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL; diff --git a/packages/udp-tracker-core/src/statistics/metrics.rs b/packages/udp-tracker-core/src/statistics/metrics.rs index 98906a596..bc9a4b221 100644 --- a/packages/udp-tracker-core/src/statistics/metrics.rs +++ b/packages/udp-tracker-core/src/statistics/metrics.rs @@ -1,10 +1,10 @@ use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::aggregate::sum::Sum; use torrust_tracker_metrics::metric_collection::{Error, MetricCollection}; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::statistics::UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL; diff --git a/packages/udp-tracker-core/src/statistics/repository.rs b/packages/udp-tracker-core/src/statistics/repository.rs index ceee0e369..3a9514ce8 100644 --- a/packages/udp-tracker-core/src/statistics/repository.rs +++ b/packages/udp-tracker-core/src/statistics/repository.rs @@ -1,10 +1,10 @@ use std::sync::Arc; use tokio::sync::{RwLock, RwLockReadGuard}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::Error; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::describe_metrics; use super::metrics::Metrics; diff --git a/packages/udp-tracker-server/src/banning/event/handler.rs b/packages/udp-tracker-server/src/banning/event/handler.rs index 78f7a96e8..3ebefafa8 100644 --- a/packages/udp-tracker-server/src/banning/event/handler.rs +++ b/packages/udp-tracker-server/src/banning/event/handler.rs @@ -2,9 +2,9 @@ use std::sync::Arc; use bittorrent_udp_tracker_core::services::banning::BanService; use tokio::sync::RwLock; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::{ErrorKind, Event}; use crate::statistics::UDP_TRACKER_SERVER_IPS_BANNED_TOTAL; diff --git a/packages/udp-tracker-server/src/lib.rs b/packages/udp-tracker-server/src/lib.rs index ccf202f6c..474872312 100644 --- a/packages/udp-tracker-server/src/lib.rs +++ b/packages/udp-tracker-server/src/lib.rs @@ -680,7 +680,8 @@ pub(crate) mod tests { use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use bittorrent_udp_tracker_core::event::Event; - use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes, PeerId, peer}; + use torrust_tracker_clock::DurationSinceUnixEpoch; + use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PeerId, peer}; pub fn sample_peer() -> peer::Peer { peer::Peer { diff --git a/packages/udp-tracker-server/src/statistics/event/handler/error.rs b/packages/udp-tracker-server/src/statistics/event/handler/error.rs index 4d56f73f9..4000db10e 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/error.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/error.rs @@ -1,7 +1,7 @@ use bittorrent_udp_tracker_protocol::PeerClient; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::{ConnectionContext, ErrorKind, UdpRequestKind}; use crate::statistics::repository::Repository; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/mod.rs b/packages/udp-tracker-server/src/statistics/event/handler/mod.rs index 9e7f5cd47..24f272445 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/mod.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/mod.rs @@ -5,7 +5,7 @@ mod request_banned; mod request_received; mod response_sent; -use torrust_tracker_primitives::DurationSinceUnixEpoch; +use torrust_tracker_clock::DurationSinceUnixEpoch; use crate::event::Event; use crate::statistics::repository::Repository; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/request_aborted.rs b/packages/udp-tracker-server/src/statistics/event/handler/request_aborted.rs index eeb4a203b..2e0f39fe4 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/request_aborted.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/request_aborted.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::ConnectionContext; use crate::statistics::UDP_TRACKER_SERVER_REQUESTS_ABORTED_TOTAL; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/request_accepted.rs b/packages/udp-tracker-server/src/statistics/event/handler/request_accepted.rs index 00e364d66..16aa1ed70 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/request_accepted.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/request_accepted.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::{LabelSet, LabelValue}; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::{ConnectionContext, UdpRequestKind}; use crate::statistics::UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/request_banned.rs b/packages/udp-tracker-server/src/statistics/event/handler/request_banned.rs index e85a0ad30..593553d41 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/request_banned.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/request_banned.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::ConnectionContext; use crate::statistics::UDP_TRACKER_SERVER_REQUESTS_BANNED_TOTAL; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/request_received.rs b/packages/udp-tracker-server/src/statistics/event/handler/request_received.rs index 677fdafb9..072ad4732 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/request_received.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/request_received.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::ConnectionContext; use crate::statistics::UDP_TRACKER_SERVER_REQUESTS_RECEIVED_TOTAL; diff --git a/packages/udp-tracker-server/src/statistics/event/handler/response_sent.rs b/packages/udp-tracker-server/src/statistics/event/handler/response_sent.rs index 3f1f995ad..92d29130c 100644 --- a/packages/udp-tracker-server/src/statistics/event/handler/response_sent.rs +++ b/packages/udp-tracker-server/src/statistics/event/handler/response_sent.rs @@ -1,6 +1,6 @@ +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::{LabelSet, LabelValue}; use torrust_tracker_metrics::{label_name, metric_name}; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::event::{ConnectionContext, UdpRequestKind, UdpResponseKind}; use crate::statistics::UDP_TRACKER_SERVER_RESPONSES_SENT_TOTAL; diff --git a/packages/udp-tracker-server/src/statistics/metrics.rs b/packages/udp-tracker-server/src/statistics/metrics.rs index be0f9ab98..ba0453317 100644 --- a/packages/udp-tracker-server/src/statistics/metrics.rs +++ b/packages/udp-tracker-server/src/statistics/metrics.rs @@ -1,13 +1,13 @@ use std::time::Duration; use serde::Serialize; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::aggregate::avg::Avg; use torrust_tracker_metrics::metric_collection::aggregate::sum::Sum; use torrust_tracker_metrics::metric_collection::{Error, MetricCollection}; use torrust_tracker_metrics::metric_name; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use crate::statistics::{ UDP_TRACKER_SERVER_ERRORS_TOTAL, UDP_TRACKER_SERVER_IPS_BANNED_TOTAL, diff --git a/packages/udp-tracker-server/src/statistics/repository.rs b/packages/udp-tracker-server/src/statistics/repository.rs index df217f3fb..68a9c7780 100644 --- a/packages/udp-tracker-server/src/statistics/repository.rs +++ b/packages/udp-tracker-server/src/statistics/repository.rs @@ -2,10 +2,10 @@ use std::sync::Arc; use std::time::Duration; use tokio::sync::{RwLock, RwLockReadGuard}; +use torrust_tracker_clock::DurationSinceUnixEpoch; use torrust_tracker_metrics::label::LabelSet; use torrust_tracker_metrics::metric::MetricName; use torrust_tracker_metrics::metric_collection::Error; -use torrust_tracker_primitives::DurationSinceUnixEpoch; use super::describe_metrics; use super::metrics::Metrics;