package types

import (
	"context"

	clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types"
)

type S2SOption struct {
	// 传输目的地路径。如果为空，则自动生成一个临时路径。
	// 只是一个建议，非强制，如果存储服务不支持直接指定目的路径，则可以忽略这个参数。
	DestPathHint string
}

type S2STransfer interface {
	// 判断是否能从指定的源存储中直传到当前存储的目的路径。仅在生成计划时使用
	CanTransfer(src *clitypes.UserSpaceDetail) bool
	// 执行数据直传。返回传输后的文件路径
	Transfer(ctx context.Context, src *clitypes.UserSpaceDetail, srcPath string, opt S2SOption) (string, error)
	// 完成传输
	Complete()
	// 取消传输。如果已经调用了Complete，则这个方法应该无效果
	Abort()
}
