diff --git a/crates/radicle-fetch/src/handle.rs b/crates/radicle-fetch/src/handle.rs index b7ae6a9c..572c3719 100644 --- a/crates/radicle-fetch/src/handle.rs +++ b/crates/radicle-fetch/src/handle.rs @@ -14,7 +14,7 @@ use crate::transport::{ConnectionStream, Transport}; /// The handle used for pulling or cloning changes from a remote peer. pub struct Handle { pub(crate) local: PublicKey, - pub(crate) repo: Repository, + repo: Repository, pub(crate) allowed: Allowed, pub(crate) transport: Transport, /// The set of keys we will ignore when fetching from a @@ -57,14 +57,12 @@ impl Handle { self.blocked.is_blocked(key) } + #[inline] pub fn repository(&self) -> &Repository { &self.repo } - pub fn repository_mut(&mut self) -> &mut Repository { - &mut self.repo - } - + #[inline] pub fn local(&self) -> &PublicKey { &self.local } diff --git a/crates/radicle-fetch/src/lib.rs b/crates/radicle-fetch/src/lib.rs index 432d69a6..9ca05e0c 100644 --- a/crates/radicle-fetch/src/lib.rs +++ b/crates/radicle-fetch/src/lib.rs @@ -73,7 +73,7 @@ where log::debug!( target: "fetch", "Finished pull of {} ({}ms)", - handle.repo.id(), + handle.repository().id(), start.elapsed().as_millis() ); result @@ -101,7 +101,7 @@ where .run(handle, &handshake, limit, remote, None) .map_err(Error::Protocol); let elapsed = start.elapsed().as_millis(); - let rid = handle.repo.id(); + let rid = handle.repository().id(); match &result { Ok(_) => { diff --git a/crates/radicle-fetch/src/state.rs b/crates/radicle-fetch/src/state.rs index e0d152df..b3232939 100644 --- a/crates/radicle-fetch/src/state.rs +++ b/crates/radicle-fetch/src/state.rs @@ -229,7 +229,7 @@ impl FetchState { log::trace!(target: "fetch", "Received refs {refs:?}"); step.pre_validate(&refs)?; - let wants_haves = step.wants_haves(&handle.repo, &refs)?; + let wants_haves = step.wants_haves(handle.repository(), &refs)?; if !wants_haves.wants.is_empty() { let keepfile = handle @@ -261,7 +261,7 @@ impl FetchState { } } - let up = step.prepare_updates(self, &handle.repo, &refs)?; + let up = step.prepare_updates(self, handle.repository(), &refs)?; self.update_all(up.tips); Ok(fetched) @@ -493,13 +493,14 @@ impl FetchState { remote, data: Some(sigrefs), } => { - if let Some(SignedRefsAt { at, .. }) = SignedRefsAt::load(remote, &handle.repo)? + if let Some(SignedRefsAt { at, .. }) = + SignedRefsAt::load(remote, handle.repository())? { // Prune non-delegates if they're behind or // diverged. A diverged case is non-fatal for // delegates. if matches!( - repository::ancestry(&handle.repo, at, sigrefs.at)?, + repository::ancestry(handle.repository(), at, sigrefs.at)?, repository::Ancestry::Behind | repository::Ancestry::Diverged ) { self.prune(&remote); @@ -523,9 +524,10 @@ impl FetchState { remote, data: Some(sigrefs), } => { - if let Some(SignedRefsAt { at, .. }) = SignedRefsAt::load(remote, &handle.repo)? + if let Some(SignedRefsAt { at, .. }) = + SignedRefsAt::load(remote, handle.repository())? { - let ancestry = repository::ancestry(&handle.repo, at, sigrefs.at)?; + let ancestry = repository::ancestry(handle.repository(), at, sigrefs.at)?; if matches!(ancestry, repository::Ancestry::Behind) { log::trace!(target: "fetch", "Advertised `rad/sigrefs` {} is behind {at} for {remote}", sigrefs.at); self.prune(&remote); @@ -566,7 +568,7 @@ impl FetchState { // delegates that pass the threshold. if valid_delegates.len() >= threshold { let applied = repository::update( - &handle.repo, + handle.repository(), self.tips .clone() .into_values() @@ -613,7 +615,7 @@ impl Cached<'_, S> { { let refname = refname.into(); match self.state.refs.refname_to_id(refname.clone()) { - None => repository::refname_to_id(&self.handle.repo, refname), + None => repository::refname_to_id(self.handle.repository(), refname), Some(oid) => Ok(Some(oid)), } } @@ -638,8 +640,8 @@ impl Cached<'_, S> { pub fn load(&self, remote: &PublicKey) -> Result, sigrefs::error::Load> { match self.state.sigrefs.get(remote) { - None => SignedRefsAt::load(*remote, &self.handle.repo), - Some(tip) => SignedRefsAt::load_at(*tip, *remote, &self.handle.repo).map(Some), + None => SignedRefsAt::load(*remote, self.handle.repository()), + Some(tip) => SignedRefsAt::load_at(*tip, *remote, self.handle.repository()).map(Some), } } @@ -653,7 +655,7 @@ impl RemoteRepository for Cached<'_, S> { fn remote(&self, remote: &RemoteId) -> Result { // N.b. this is unused so we just delegate to the underlying // repository for a correct implementation. - self.handle.repo.remote(remote) + self.handle.repository().remote(remote) } fn remotes(&self) -> Result, storage::refs::Error> { @@ -665,7 +667,7 @@ impl RemoteRepository for Cached<'_, S> { } fn remote_refs_at(&self) -> Result, storage::refs::Error> { - self.handle.repo.remote_refs_at() + self.handle.repository().remote_refs_at() } }