pub struct Graft {
pub local: VolumeId,
pub remote: VolumeId,
pub sync: Option<SyncPoint>,
pub pending_commit: Option<PendingCommit>,
}Fields§
§local: VolumeIdThe local Volume backing this Graft
remote: VolumeIdThe remote Volume backing this Graft.
sync: Option<SyncPoint>Metadata keeping track of which portion of the local and remote volume this Graft cares about.
pending_commit: Option<PendingCommit>Presence of the pending_commit field means that the Push operation is in
the process of committing to the remote. If no such Push job is currently
running (i.e. it was interrupted), this field must be used to resume or
abort the commit process.
Implementations§
Source§impl Graft
impl Graft
pub fn new( local: VolumeId, remote: VolumeId, sync: Option<SyncPoint>, pending_commit: Option<PendingCommit>, ) -> Self
pub fn with_sync(self, sync: Option<SyncPoint>) -> Self
pub fn sync(&self) -> Option<&SyncPoint>
pub fn with_pending_commit(self, pending_commit: Option<PendingCommit>) -> Self
pub fn pending_commit(&self) -> Option<&PendingCommit>
pub fn local_watermark(&self) -> Option<LSN>
pub fn remote_commit(&self) -> Option<LSN>
pub fn local_changes(&self, head: Option<LSN>) -> Option<RangeInclusive<LSN>>
pub fn remote_changes(&self, head: Option<LSN>) -> Option<RangeInclusive<LSN>>
pub fn status( &self, latest_local: Option<LSN>, latest_remote: Option<LSN>, ) -> GraftStatus
Trait Implementations§
Source§impl EmptyState<(), Graft> for ()where
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
impl EmptyState<(), Graft> for ()where
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
Source§impl ForOverwrite<(), Graft> for ()where
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
impl ForOverwrite<(), Graft> for ()where
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
Source§fn for_overwrite() -> __Self
fn for_overwrite() -> __Self
Produces a new
Self value to be overwritten.Source§impl RawMessage for __Selfwhere
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
impl RawMessage for __Selfwhere
(): EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId> + Encoder<general, Option<PendingCommit>> + Encoder<general, Option<SyncPoint>> + Encoder<general, VolumeId>,
const __ASSERTIONS: ()
Source§fn raw_encode<__B>(&self, buf: &mut __B)
fn raw_encode<__B>(&self, buf: &mut __B)
Encodes the message to a buffer. Read more
Source§fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
Prepends the message to a prepend buffer.
Source§fn raw_encoded_len(&self) -> usize
fn raw_encoded_len(&self) -> usize
Returns the encoded length of the message without a length delimiter.
Source§impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, general, Option<PendingCommit>> + BorrowDecoder<'__a, general, Option<SyncPoint>> + BorrowDecoder<'__a, general, VolumeId> + EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId>,
impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, general, Option<PendingCommit>> + BorrowDecoder<'__a, general, Option<SyncPoint>> + BorrowDecoder<'__a, general, VolumeId> + EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId>,
Source§fn raw_borrow_decode_field(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, &'__a [u8]>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_borrow_decode_field( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, &'__a [u8]>, ctx: DecodeContext, ) -> Result<(), DecodeError>
Decodes a field from a buffer into
self from a borrowed slice.Source§impl RawMessageDecoder for __Selfwhere
(): Decoder<general, Option<PendingCommit>> + Decoder<general, Option<SyncPoint>> + Decoder<general, VolumeId> + EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId>,
impl RawMessageDecoder for __Selfwhere
(): Decoder<general, Option<PendingCommit>> + Decoder<general, Option<SyncPoint>> + Decoder<general, VolumeId> + EmptyState<general, Option<PendingCommit>> + EmptyState<general, Option<SyncPoint>> + EmptyState<general, VolumeId>,
Source§fn raw_decode_field<__B>(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, __B>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_decode_field<__B>( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, __B>, ctx: DecodeContext, ) -> Result<(), DecodeError>
Decodes a field from a buffer into
self.impl Eq for Graft
impl StructuralPartialEq for Graft
Auto Trait Implementations§
impl Freeze for Graft
impl RefUnwindSafe for Graft
impl Send for Graft
impl Sync for Graft
impl Unpin for Graft
impl UnwindSafe for Graft
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Message for Twhere
T: RawMessage,
impl<T> Message for Twhere
T: RawMessage,
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Encodes the message to a buffer. Read more
Source§fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
Prepends the message to a buffer.
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Encodes the message with a length-delimiter to a buffer. Read more
Source§fn message_is_empty(&self) -> bool
fn message_is_empty(&self) -> bool
Returns whether the message is currently in an empty state.
Source§fn clear_message(&mut self)
fn clear_message(&mut self)
Resets the message to an empty state.
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Returns the encoded length of the message without a length delimiter.
Source§fn encode_to_bytes(&self) -> Bytes
fn encode_to_bytes(&self) -> Bytes
Encodes the message to a
Bytes buffer.Source§fn encode_fast(&self) -> ReverseBuffer
fn encode_fast(&self) -> ReverseBuffer
Encodes the message to a
ReverseBuffer.Source§fn encode_length_delimited_fast(&self) -> ReverseBuffer
fn encode_length_delimited_fast(&self) -> ReverseBuffer
Encodes the message with a length-delimiter to a
ReverseBuffer.Source§fn encode_contiguous(&self) -> ReverseBuffer
fn encode_contiguous(&self) -> ReverseBuffer
Encodes the message to a new
RevserseBuffer which will have exactly the required capacity
in one contiguous slice.Source§fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
Encodes the message with a length-delimiter to a new
RevserseBuffer which will have
exactly the required capacity in one contiguous slice.Source§fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
Encodes the message to a
Bytes buffer.Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
Encodes the message with a length-delimiter to a newly allocated buffer.
Source§fn encode_length_delimited_to_bytes(&self) -> Bytes
fn encode_length_delimited_to_bytes(&self) -> Bytes
Encodes the message with a length-delimiter to a
Bytes buffer.Source§fn encode_length_delimited_dyn(
&self,
buf: &mut dyn BufMut,
) -> Result<(), EncodeError>
fn encode_length_delimited_dyn( &self, buf: &mut dyn BufMut, ) -> Result<(), EncodeError>
Encodes the message with a length-delimiter to a
Bytes buffer.Source§impl<T> OwnedMessage for Twhere
T: RawMessageDecoder,
impl<T> OwnedMessage for Twhere
T: RawMessageDecoder,
Source§fn decode<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Decodes an instance of the message from a buffer. Read more
Source§fn decode_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Decodes a length-delimited instance of the message from the buffer.
Source§fn replace_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
fn replace_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Decodes the non-ignored fields of this message from the buffer, replacing their values.
Source§fn replace_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
fn replace_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
Decodes the non-ignored fields of this message, replacing their values from a
length-delimited value encoded in the buffer.
Source§fn replace_from_slice(&mut self, buf: &[u8]) -> Result<(), DecodeError>
fn replace_from_slice(&mut self, buf: &[u8]) -> Result<(), DecodeError>
Decodes the non-ignored fields of this message from the buffer, replacing their values.
Source§fn replace_from_length_delimited_slice(
&mut self,
buf: &[u8],
) -> Result<(), DecodeError>
fn replace_from_length_delimited_slice( &mut self, buf: &[u8], ) -> Result<(), DecodeError>
Decodes the non-ignored fields of this message, replacing their values from a
length-delimited value encoded in the buffer.
Source§fn replace_from_dyn(&mut self, buf: &mut dyn Buf) -> Result<(), DecodeError>
fn replace_from_dyn(&mut self, buf: &mut dyn Buf) -> Result<(), DecodeError>
Decodes the non-ignored fields of this message from the buffer, replacing their values.
Source§fn replace_from_length_delimited_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<(), DecodeError>
fn replace_from_length_delimited_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<(), DecodeError>
Decodes the non-ignored fields of this message, replacing their values from a
length-delimited value encoded in the buffer.
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.