设计方案
由五个主要类组成
1 | SmbContextManager |
主要类设计
SmbContextManager — 全局上下文与连接管理
职能
- 初始化/销毁 libsmb2 上下文 (smb2_context)
- 管理连接(IP、端口、身份认证)
- 提供连接状态查询
核心点
- 封装 smb2_init_context、smb2_connect_share、smb2_destroy_context
- 保证线程安全(多个 task 调用)
SmbSession — 与具体远程共享的会话
职能
- 表示一次 NAS 登录会话(绑定一个 SmbContextManager)
- 负责目录与文件的逻辑操作:浏览、创建、删除
- 是上层与传输、任务的桥梁
SmbDirectory — 目录操作对象
职能
- 封装目录的抽象操作
- 主要用于更清晰地组织 List/Mkdir
- 方便 UI 层实现目录树、文件浏览
SmbFileTransfer — 上传/下载的异步任务控制器(核心类)
职能
- 封装文件上传 / 下载逻辑
- 支持异步执行(后台线程)
- 支持进度回调、错误回调、取消
关键逻辑
- 封装 libsmb2 的 smb2_open / smb2_write / smb2_read
- 利用线程或线程池执行
SmbTaskExecutor — 通用任务调度器
职能
- 提供异步任务队列
- 类似一个简单线程池
- SmbFileTransfer 可以通过它执行任务
类关系
1 | +-------------------+ |
1 | class SmbContextManager { |
1 | #include "smb/smb_context_manager.h" |
1 | #include "smb/smb_context_manager.h" |