using Dpz.Core.Web.Jobs.Models.FileTransfer;
namespace Dpz.Core.Web.Jobs.Services.FileTransfer;
/// <summary>
/// 文件传输会话服务。
/// </summary>
public interface IFileTransferSessionService
{
/// <summary>接收方加入房间。</summary>
FileTransferOperationResult<FileTransferRoomResult> JoinRoom(
string roomKey,
string connectionId,
string joinUrl
);
/// <summary>发送方发起一个文件传输要约。</summary>
FileTransferOperationResult<FileTransferRecord> AddTransferOffer(
string roomKey,
string connectionId,
FileTransferMetadata metadata
);
/// <summary>接收方接受传输要约。</summary>
FileTransferOperationResult<FileTransferRecord> AcceptTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>接收方拒绝传输要约。</summary>
FileTransferOperationResult<FileTransferRecord> RejectTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>暂停指定文件的传输。</summary>
FileTransferOperationResult<FileTransferRecord> PauseTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>恢复暂停的文件传输。</summary>
FileTransferOperationResult<FileTransferRecord> ResumeTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>取消指定文件的传输。</summary>
FileTransferOperationResult<FileTransferRecord> CancelFileTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>发送方发送一个文件分片。</summary>
FileTransferOperationResult<FileTransferRoom> SendChunk(
string roomKey,
string connectionId,
FileTransferChunk chunk
);
/// <summary>接收方确认分片(空调用,仅校验房间和权限)。</summary>
FileTransferOperationResult<FileTransferRoom> AcknowledgeChunk(
string roomKey,
string connectionId
);
/// <summary>发送方通知传输完成。</summary>
FileTransferOperationResult<FileTransferRecord> CompleteTransfer(
string roomKey,
string connectionId,
string transferId
);
/// <summary>关闭房间,仅房间参与者可调用。</summary>
FileTransferOperationResult<FileTransferRoom> CloseRoom(string roomKey, string connectionId);
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
代码说明
这是一个 文件传输会话服务的接口定义,使用 C# 编写,属于 Dpz.Core.Web.Jobs.Services.FileTransfer 命名空间。
接口概述
IFileTransferSessionService 定义了一个完整的 P2P 文件传输系统 的核心业务逻辑接口,实现了基于"房间"概念的文件传输管理。
主要功能模块
1. 房间管理
JoinRoom: 接收方通过房间密钥加入传输房间
2. 传输生命周期管理
AddTransferOffer: 发送方创建文件传输要约(发起传输)AcceptTransfer: 接收方同意接收文件RejectTransfer: 接收方拒绝接收文件CompleteTransfer: 发送方标记传输完成
3. 传输控制
PauseTransfer: 暂停文件传输ResumeTransfer: 恢复已暂停的传输CancelFileTransfer: 取消文件传输
4. 数据传输
SendChunk: 发送方发送文件分片数据AcknowledgeChunk: 接收方确认收到分片(用于校验权限)
5. 会话管理
CloseRoom: 关闭传输房间
方法签名特点
所有方法都包含以下通用参数:
roomKey: 房间唯一标识connectionId: 连接标识(可能用于 WebSocket/SignalR 等实时连接)- 返回类型均为泛型结果类
FileTransferOperationResult<T>
使用场景
这个接口适用于实现类似 网页版文件传输工具(如 AirDrop、Snapdrop 等)的后端服务,支持:
- 实时文件传输
- 分片上传/下载
- 传输状态管理
- 权限验证
AI 正在分析代码…
评论加载中...