notify/transfer_api.go

88 lines
2.4 KiB
Go
Raw Permalink Normal View History

package notify
import (
"context"
"errors"
"io"
)
type TransferReaderAt interface {
io.ReaderAt
Size() int64
}
type TransferWriterAt interface {
io.WriterAt
}
type TransferCommitter interface {
Commit(context.Context) error
}
type TransferSyncer interface {
Sync(context.Context) error
}
type TransferCloser interface {
Close() error
}
type TransferDescriptor struct {
ID string
Channel TransferChannel
Size int64
Checksum string
Metadata map[string]string
}
type TransferSendOptions struct {
Descriptor TransferDescriptor
Source TransferReaderAt
ChunkSize int
Parallelism int
MaxInflightBytes int64
VerifyChecksum bool
}
type TransferReceiveOptions struct {
Descriptor TransferDescriptor
Sink TransferWriterAt
SyncOnCheckpoint bool
VerifyChecksum bool
}
type TransferAcceptInfo struct {
Descriptor TransferDescriptor
LogicalConn *LogicalConn
TransportConn *TransportConn
TransportGeneration uint64
}
type TransferHandle interface {
ID() string
LogicalConn() *LogicalConn
TransportConn() *TransportConn
Snapshot() (TransferSnapshot, bool)
Wait(context.Context) error
Abort(context.Context, error) error
}
var (
errTransferIDEmpty = errors.New("transfer id is empty")
errTransferSourceNil = errors.New("transfer source is nil")
errTransferSinkNil = errors.New("transfer sink is nil")
errTransferHandlerNotConfigured = errors.New("transfer handler is not configured")
errTransferSizeInvalid = errors.New("transfer size must be non-negative")
errTransferSessionNotFound = errors.New("transfer session not found")
errTransferSessionExists = errors.New("transfer session already exists")
errTransferStreamAlreadyActive = errors.New("transfer stream already active")
errTransferSegmentOffset = errors.New("transfer segment offset mismatch")
errTransferSizeMismatch = errors.New("transfer size mismatch")
errTransferChecksumMismatch = errors.New("transfer checksum mismatch")
errTransferChecksumUnsupported = errors.New("transfer checksum verification requires io.ReaderAt")
errTransferSequenceEncodeNil = errors.New("transfer sequence encoder is nil")
errTransferSequenceDecodeNil = errors.New("transfer sequence decoder is nil")
errTransferAlreadyCompleted = errors.New("transfer already completed")
errTransferAlreadyAborted = errors.New("transfer already aborted")
)