Quine.FileTransfer Namespace

Contains types for transferring files in a single-producer, multiple-consumers manner. Provides concrete implementations for copying OS files.

Classes

CryptographicTransferHash Implements ITransferHasher by a user-specified cryptographic hash.
HashVerificationException Thrown when hash verification fails.
TransferDriver This class is the main entry point for starting transfers. The same instance should be reused for many executions, though not concurrently. This class allocates native memory (the amount depends on the parameters passed to ctor) which is held until disposal.
TransferStateMachine Data shared between ITransferWorker and TransferDriver that is used to manage execution. This class cannot be derived from outside of this assembly, but its public properties can be used to inspect the worker's status after execution.
UnbufferedFile Common implementation for file reader and writer. Uses unbuffered ("direct") file I/O.
UnbufferedFileReader File reader (producer) in a transfer operation.
UnbufferedFileWriter File writer (consumer) in a transfer operation.
XX64TransferHash Implements XXHash64 algorithm.

Interfaces

IFileStreamOpenStrategy Provides methods for creating unbuffered file streams from paths directly accessible to OS.
ITransferBuffer Data buffer shared between producer and consumers.
ITransferConsumer This interface must be implemented by the consumer-side of a transfer.
ITransferHasher This interface must be implemented by hash algorithms. The interface provides s default implementation for Clone, which just invokes Clone.
ITransferProducer This interface must be implemented by the producer-side of a transfer.
ITransferWorker Common properties and methods shared between ITransferProducer and ITransferConsumer. The implementation of async methods MUST check CancellationToken for cancellation.