///|
/// Write integrated document changes to an application-supplied field codec.
/// Pending blocks and early deletions are excluded, matching Rust's generic
/// ReadTxn::encode_diff. Use the v1/v2 state-update helpers to forward pending data.
pub fn Doc::encode_diff(
self : Doc,
remote : StateVector,
encoder : &Encoder,
) -> Unit {
try! copy_update_fields(
DecoderV2(self.encode_diff_v2(remote)),
encoder,
0x7fff_ffff,
)
}
///|
/// Write the integrated state through a generic encoder. Like pinned Rust's
/// generic method, this omits pending data; its v1/v2 convenience methods also
/// merge pending updates. The distinction matters for out-of-order delivery.
pub fn Doc::encode_state_as_update(
self : Doc,
remote : StateVector,
encoder : &Encoder,
) -> Unit {
self.encode_diff(remote, encoder)
}
///|
/// Write retained historical state through a generic encoder. GC must be off.
pub fn Doc::encode_state_from_snapshot(
self : Doc,
snapshot : Snapshot,
encoder : &Encoder,
) -> Unit raise DecodeError {
copy_update_fields(
DecoderV2(self.encode_state_from_snapshot_v2(snapshot)),
encoder,
0x7fff_ffff,
)
}
///|
/// Write just this transaction's insertions and deletions through a field codec.
pub fn Transaction::encode_update(
self : Transaction,
encoder : &Encoder,
) -> Unit {
try! copy_update_fields(
DecoderV2(self.encode_update_v2()),
encoder,
0x7fff_ffff,
)
}