28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
![]() |
export type RequestRelease = () => Promise<void> | 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<void>
|
|||
|
unlock(): Promise<void>
|
|||
|
}
|