Get desktop application:
View/edit binary Protocol Buffers messages
BlockHash represents a pair of weak and strong hash for a base block.
Used in:
Weak is the weak hash for the block.
Strong is the strong hash for the block.
Operation represents an rsync operation, which can be either a data operation or a block operation.
Used in:
,Data contains data for data operations. If its length is 0, then the operation is assumed to be a non-data operation. Operation transmitters and receivers may thus treat a length-0 buffer as semantically equivalent to a nil buffer and utilize that fact to efficiently re-use buffer capacity (e.g. by truncating the buffer but not releasing it).
Start is the 0-indexed starting block for block operations.
Count is the number of blocks for block operations.
ReceiverState encodes that status of an rsync receiver. It should be considered immutable.
Used in:
Path is the path currently being received.
ReceivedSize is the number of bytes that have been received for the current path from both block and data operations.
ExpectedSize is the number of bytes expected for the current path.
ReceivedFiles is the number of files that have already been received.
ExpectedFiles is the total number of files expected.
TotalReceivedSize is the total number of bytes that have been received for all files from both block and data operations.
TODO: We may want to add statistics on the speedup offered by the rsync algorithm in terms of data volume, though obviously this can't account for any savings that might come from compression at the transport layer. It would also be really nice to have TotalExpectedSize, but this is prohibitively difficult and expensive to compute.
Signature represents an rsync base signature. It encodes the block size used to generate the signature, the size of the last block in the signature (which may be smaller than a full block), and the hashes for the blocks of the file.
Used in:
, ,BlockSize is the block size used to compute the signature.
LastBlockSize is the size of the last block in the signature.
Hashes are the hashes of the blocks in the base.
Transmission represents a single message in a transmission stream. As a Protocol Buffers message type, its internals are inherently public, but it should otherwise be treated as an opaque type with a private implementation.
ExpectedSize sets the expected size for the current incoming file. It is only set alongside the first operation in a file's transmission stream. If it zero, then the file's size should be treated as unknown, because a file of zero size will receive an immediate "done" transmission and would not be indicated as having zero size.
Operation is the next operation in the transmission stream for the current file.
Done indicates that the transmission stream for the current file is finished. If Done is true, then there will be no operation set, but there may be an error set.
Error indicates that a non-terminal error has occurred. It can only be present if Done is true.