cgx_core/messages/
crate_resolution.rs1use std::{path::PathBuf, time::Duration};
2
3use serde::{Deserialize, Serialize};
4
5use super::Message;
6use crate::{crate_resolver::ResolvedCrate, cratespec::CrateSpec};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10#[serde(tag = "event", rename_all = "snake_case")]
11pub enum CrateResolutionMessage {
12 CacheLookup {
13 spec: CrateSpec,
14 },
15 CacheHit {
16 path: PathBuf,
17 age_secs: u64,
18 ttl_remaining_secs: u64,
19 },
20 CacheMiss {
21 spec: CrateSpec,
22 },
23 CacheStale {
24 spec: CrateSpec,
25 age_secs: u64,
26 },
27 Resolving {
28 spec: CrateSpec,
29 },
30 Resolved {
31 resolved: ResolvedCrate,
32 },
33 CacheStored {
34 path: PathBuf,
35 },
36 UsingStaleFallback {
37 spec: CrateSpec,
38 age_secs: u64,
39 },
40}
41
42impl CrateResolutionMessage {
43 pub fn cache_lookup(spec: &CrateSpec) -> Self {
44 Self::CacheLookup { spec: spec.clone() }
45 }
46
47 pub fn cache_hit(path: &std::path::Path, age: Duration, ttl_remaining: Duration) -> Self {
48 Self::CacheHit {
49 path: path.to_path_buf(),
50 age_secs: age.as_secs(),
51 ttl_remaining_secs: ttl_remaining.as_secs(),
52 }
53 }
54
55 pub fn cache_miss(spec: &CrateSpec) -> Self {
56 Self::CacheMiss { spec: spec.clone() }
57 }
58
59 pub fn cache_stale(spec: &CrateSpec, age: Duration) -> Self {
60 Self::CacheStale {
61 spec: spec.clone(),
62 age_secs: age.as_secs(),
63 }
64 }
65
66 pub fn resolving(spec: &CrateSpec) -> Self {
67 Self::Resolving { spec: spec.clone() }
68 }
69
70 pub fn resolved(resolved: &ResolvedCrate) -> Self {
71 Self::Resolved {
72 resolved: resolved.clone(),
73 }
74 }
75
76 pub fn cache_stored(path: &std::path::Path) -> Self {
77 Self::CacheStored {
78 path: path.to_path_buf(),
79 }
80 }
81
82 pub fn using_stale_fallback(spec: &CrateSpec, age: Duration) -> Self {
83 Self::UsingStaleFallback {
84 spec: spec.clone(),
85 age_secs: age.as_secs(),
86 }
87 }
88}
89
90impl From<CrateResolutionMessage> for Message {
91 fn from(msg: CrateResolutionMessage) -> Self {
92 Message::CrateResolution(msg)
93 }
94}