Skip to main content

Puller

Struct Puller 

Source
struct Puller<'a> {
Show 14 fields server: &'a Server, folder: &'a Path, into: &'a Path, own: &'a str, state: &'a mut State, pulled: &'a mut Pulled, now: i64, own_there: BTreeMap<String, String>, covered: BTreeSet<String>, lost: bool, departed: Departed, departed_there: Vec<(String, String)>, past: Option<u32>, mine: BTreeSet<String>,
}
Expand description

One pull: the server’s folder looked through, what is newer there fetched.

Fields§

§server: &'a Server§folder: &'a Path

The sharing folder as the sync app keeps it, and where what comes goes.

§into: &'a Path§own: &'a str§state: &'a mut State§pulled: &'a mut Pulled§now: i64§own_there: BTreeMap<String, String>

This device’s own files seen in the folders looked through, their ETags there (MIRROR).

§covered: BTreeSet<String>

The folders of the server looked through in this step (“” the folder itself, “devices/”).

§lost: bool

Sioul keeping the folder itself, its copy lost: none of its records here.

§departed: Departed

What this device took out here of the devices that no longer count (Departed): never fetched again; Sioul keeping the folder itself, taken out there too (push).

§departed_there: Vec<(String, String)>

Those of their past rounds still there and gone here, with their ETag as listed (MIRROR): taken out there by push; and every file there of a device whose files you removed (Departed::devices).

§past: Option<u32>

Sioul keeping the folder itself: this device’s rounds below this one are past their time (share::rounds_past): taken out there whatever it remembers sending (take_out_own), never brought back (restore).

§mine: BTreeSet<String>

Sioul keeping the folder itself: the sealed files this device made or counts as its own (share::own_sealed): one its copy fetched once and its own change names now goes up as its own (own_files).

Implementations§

Source§

impl Puller<'_>

Source

fn url(&self, relative: &str) -> String

Source

fn unchanged(&self, relative: &str, etag: &str) -> bool

A folder of the server not changed since it was last looked through, lately.

Source

fn looked(&mut self, relative: &str, etag: &str)

A folder looked through to its end: until it changes, not again for a while.

Source

fn run(&mut self) -> Result<(), Stop>

Source

fn away(&mut self, relative: &str, item: &Item)

A file there that this device took out here and never fetches again (Departed): a device’s round past its time, any file of a device whose files you removed. Sioul keeping the folder itself, one gone here is taken out there at the end of the step (push).

Source

fn mirror(&self) -> bool

Sioul keeps the folder itself (MIRROR): what comes goes into it, no sync app beside.

Source

fn own_listed(&mut self, dir: &str, listing: &Listing)

A folder of the server just looked through: this device’s own files in it (MIRROR), their ETags there, for what goes up next.

Source

fn seal(&mut self, root: &Listing) -> Result<(), Stop>

The server’s seal, read again when it changed there or every six hours: another, or none, and nothing more is fetched from there.

Source

fn forget_gone(&mut self, dir: &str, listing: &Listing)

Files of a folder of the server no longer there: forgotten, and their copies fetched gone (a records’ file only once its writer removed it: every device had read past it).

Source

fn small(&mut self, relative: &str, item: &Item) -> Result<(), Stop>

A small file (notes, an entry, a claim) fetched whole when it changed there since it was last fetched; kept only when it differs from the synced folder’s copy, and only when all of it came.

Source

fn restore(&mut self, relative: &str, item: &Item) -> Result<(), Stop>

One of this device’s own files there and not here (MIRROR), never sent from here, or its copy lost (lost: none of its records here): brought back, so that it goes on after its last record rather than numbering them again over the others’ reading.

Source

fn push(&mut self) -> Result<(), Stop>

This device’s own files (MIRROR) changed here since they went up, or changed or gone there since (seen in the folders just looked through), sent, in own_files’ order, each over what is there as it was seen (send). Then what it let go here goes there too: its records past their time (remove_old_rounds: every device read past them), never its last round, and nothing while none of its records is here; the sealed files it swept.

Source

fn take_out_own(&mut self) -> Result<(), Stop>

What this device let go here, taken out there too: its records past their time (remove_old_rounds: every device read past them) listed in this step and gone here, never its last round, and nothing while none of its records is here: those it remembers sending, and those below the readers’ floor (past, share::rounds_past) whatever it remembers (one forgotten after a refused delete, “Send everything again”, its state lost); then the sealed files it swept. Until 17 October 2026 a past round it no longer remembered stayed there, and restore brought it back here at the next step, megabytes each.

Source

fn take_out_departed(&mut self)

What this device took out here of the devices that no longer count (Departed), taken out there too: their past rounds still listed in this step and gone here, over the ETag listed; the sealed files swept, every six hours at most, when still as old there (take_out_swept). Another device doing the same first makes it gone (404), a sync app’s copy sent again since makes it changed (412): left, as any other answer or failure, for a later step.

Source

fn send( &mut self, relative: &str, size: u64, modified: u64, seen: Option<String>, ) -> Result<(), Stop>

One of this device’s files sent whole over what is there as it was seen (seen: its ETag; none there). Refused because it changed there meanwhile (412), sent again over what is there now: it is this device’s own. A folder missing there (409), made first. A sealed file goes only where none is: one there already is the same. Refused again and again: left for the next step; nothing here is lost.

Source

fn make_folders(&mut self, relative: &str) -> Result<(), Stop>

The folders a file’s path goes through, made there (MKCOL) when missing.

Source

fn take_out(&mut self, relative: &str, seen: Option<String>) -> Result<(), Stop>

One of this device’s files taken out there, only as it was seen when its ETag is known; gone already, or changed there since (another device sealed the same content again), forgotten here all the same.

Source

fn round(&mut self, name: &str, item: &Item) -> Result<(), Stop>

A device’s records, when the server’s copy is longer than both the synced folder’s and what was fetched: what is new there, from the end of the longer copy here, its last whole line asked again and checked to be the same there (a copy that does not join comes whole). Only whole lines are kept: a line half arrived comes again next time.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Puller<'a>

§

impl<'a> !UnwindSafe for Puller<'a>

§

impl<'a> Freeze for Puller<'a>

§

impl<'a> Send for Puller<'a>

§

impl<'a> Sync for Puller<'a>

§

impl<'a> Unpin for Puller<'a>

§

impl<'a> UnsafeUnpin for Puller<'a>

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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