feat(notify): 重构通信内核并补齐 stream/bulk/record/transfer 能力
- 引入 LogicalConn/TransportConn 分层,ClientConn 保留兼容适配层 - 新增 Stream、Bulk、RecordStream 三条数据面能力及对应控制路径 - 完成 transfer/file 传输内核与状态快照、诊断能力 - 补齐 reconnect、inbound dispatcher、modern psk 等基础模块 - 增加大规模回归、并发与基准测试覆盖 - 更新依赖库
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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")
|
||||
)
|
||||
Reference in New Issue
Block a user