Struct RemoteDelta

Source
pub struct RemoteDelta<T: MutTxnTExt + TxnTExt> {
    pub inodes: HashSet<Position<Hash>>,
    pub to_download: Vec<CS>,
    pub remote_ref: Option<RemoteRef<T>>,
    pub ours_ge_dichotomy_set: HashSet<CS>,
    pub theirs_ge_dichotomy_set: HashSet<CS>,
    pub theirs_ge_dichotomy: Vec<(u64, Hash, Merkle, bool)>,
    pub remote_unrecs: Vec<(u64, CS)>,
}
Expand description

For a RemoteRepo that’s Local, Ssh, or Http (anything other than a LocalChannel), RemoteDelta contains data about the difference between the “actual” state of the remote (‘theirs’) and the last version of it that we cached (‘ours’). The dichotomy is the last point at which the two were the same. remote_unrecs is a list of changes which used to be present in the remote, AND were present in the current channel we’re pulling to or pushing from. The significance of that is that if we knew about a certain change but did not pull it, the user won’t be notified if it’s unrecorded in the remote.

If the remote we’re pulling from or pushing to is a LocalChannel, (meaning it’s just a different channel of the repo we’re already in), then ours_ge_dichotomy, theirs_ge_dichotomy, and remote_unrecs will be empty since they have no meaning. If we’re pulling from a LocalChannel, there’s no cache to have diverged from, and if we’re pushing to a LocalChannel, we’re not going to suddenly be surprised by the presence of unknown changes.

This struct will be created by both a push and pull operation since both need to update the changelist and will at least try to update the local remote cache. For a push, this later gets turned into PushDelta.

Fields§

§inodes: HashSet<Position<Hash>>§to_download: Vec<CS>§remote_ref: Option<RemoteRef<T>>§ours_ge_dichotomy_set: HashSet<CS>§theirs_ge_dichotomy_set: HashSet<CS>§theirs_ge_dichotomy: Vec<(u64, Hash, Merkle, bool)>§remote_unrecs: Vec<(u64, CS)>

Implementations§

Source§

impl RemoteDelta<MutTxn<()>>

Source

pub fn to_local_channel_push( self, remote_channel: &str, txn: &mut MutTxn<()>, path: &[String], channel: &ChannelRef<MutTxn<()>>, repo: &Repository, ) -> Result<PushDelta, Error>

Make a PushDelta from a RemoteDelta when the remote is a RemoteRepo::LocalChannel.

Source

pub fn to_remote_push( self, txn: &mut MutTxn<()>, path: &[String], channel: &ChannelRef<MutTxn<()>>, repo: &Repository, ) -> Result<PushDelta, Error>

Make a PushDelta from a RemoteDelta when the remote is not a LocalChannel.

Auto Trait Implementations§

§

impl<T> Freeze for RemoteDelta<T>

§

impl<T> !RefUnwindSafe for RemoteDelta<T>

§

impl<T> Send for RemoteDelta<T>
where <T as TxnT>::Remote: Send, <T as TxnT>::Revremote: Send, <T as TxnT>::Remotestates: Send, <T as ChannelTxnT>::Tags: Send,

§

impl<T> Sync for RemoteDelta<T>
where <T as TxnT>::Remote: Send, <T as TxnT>::Revremote: Send, <T as TxnT>::Remotestates: Send, <T as ChannelTxnT>::Tags: Send,

§

impl<T> Unpin for RemoteDelta<T>

§

impl<T> !UnwindSafe for RemoteDelta<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,