export type RequestRelease = () => Promise | void /** * Locker 接口用于为给定的资源标识符创建一个 Lock 实例。 * 该接口的主要作用是提供一个锁定机制,确保对资源(如上传和其元数据)的独占访问。 */ export interface Locker { newLock(id: string): Lock } /** * Lock 接口定义了实现锁定机制的方法。 * 该接口主要用于确保对资源的独占访问,遵循 TUS 协议的建议,强调需要防止长时间保留锁。 * 这种方法有助于高效管理资源,并避免半开 TCP 连接的问题。 * * 方法: * - lock(id, cancelReq): 获取由 'id' 标识的资源的锁。如果锁已被另一个请求持有, * 则提供 'cancelReq' 回调以通知当前锁持有者释放锁。 * 'cancelReq' 回调应在另一个请求尝试获取先前锁定的资源时调用。 * 这种机制确保锁仅在必要时持有,并迅速释放以供其他请求使用。 * * - unlock(id): 释放由 'id' 标识的资源上的锁。锁持有者应在完成操作后或通过 'cancelReq' 回调接收到信号后调用此方法, * 以释放锁。 */ export interface Lock { lock(cancelReq: RequestRelease): Promise unlock(): Promise }