notify/transfer_api.go
starainrt 09d972c7b7
feat(notify): 重构通信内核并补齐 stream/bulk/record/transfer 能力
- 引入 LogicalConn/TransportConn 分层,ClientConn 保留兼容适配层
  - 新增 Stream、Bulk、RecordStream 三条数据面能力及对应控制路径
  - 完成 transfer/file 传输内核与状态快照、诊断能力
  - 补齐 reconnect、inbound dispatcher、modern psk 等基础模块
  - 增加大规模回归、并发与基准测试覆盖
  - 更新依赖库
2026-04-15 15:24:36 +08:00

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")
)