88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
|
|
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")
|
||
|
|
)
|