Skip to content

术语表

术语在 tdesktop 中的含义容易混淆的点
Core::Launcher解析启动参数、准备路径/日志/平台环境并创建 Qt 应用的前置层不是业务 Application,也不是平台窗口
Core::SandboxQApplication 子类;Qt 事件循环、单实例 IPC、应用对象创建与退出编排名字不是“安全沙箱”的承诺
Core::Application进程级业务根对象,持有 Domain、窗口、媒体、通知和全局服务不等于 QApplication
Main::Domain一个本地数据目录中的账号集合与当前激活账号Telegram 的网络 domain 不是这里的 Domain
Main::Account一个授权槽位;拥有 MTProto 实例、账号本地存储与可选登录 SessionAccount 在未登录时也可以存在
Main::Session已登录用户的运行时服务容器与 MTProto transport session 不是同一个概念
Data::Session已登录用户的内存领域仓库,统一拥有 peers、histories、messages 等实体它被 Main::Session 拥有,不负责网络连接本身
MTP::Instance跨 DC 的 MTProto 客户端编排入口下层还有每 DC / transport 的 session 与 connection
ApiWrap面向产品语义的 API 门面与高层操作集合不是所有 API 都在这个大文件里;许多已拆到 api/
Api::Updates维护 seq/pts/qts/date、应用 Updates、发现缺口并请求 difference它同时处理全局和频道两套一致性路径
PeerDataUser/Chat/Channel 的公共基类PeerId 编码了 peer 类型;不要只看裸数值
History某个 peer/thread 的会话聚合、消息索引和聊天列表状态不是简单 std::vector<HistoryItem>
HistoryItem一条消息或服务消息的领域对象视图对应物是 HistoryView::Element
FullMsgIdPeerId + MsgId 的全局可定位消息身份普通 MsgId 在不同频道可能冲突
random_id客户端发送请求的幂等/对账标识不等于最终服务器消息 ID
pts更新序列位置;配合 pts_count 检测是否连续频道维护独立 PTS
seqUpdates 容器的全局序号不应和消息 ID 或 PTS 混用
qts与加密/特殊更新队列相关的序列位置大部分普通消息阅读不先深入它
DCTelegram 数据中心主 DC、媒体 DC、下载 shift 会影响请求路由
TLTelegram Type Language;从 .tl schema 生成强类型 C++生成类型名常带 MTP 前缀和 constructor 分支
rpl::producer<T>惰性的值/事件序列producer 本身不一定持有数据
rpl::variable<T>当前值 + 后续变化value()changes() 语义不同
rpl::event_stream<T>主动 fire 的事件源通常对外暴露 events() producer
rpl::lifetime订阅和异步链的取消边界忘记绑定会造成悬挂回调或过期更新
crl::on_main把任务切回主线程执行它同时形成异步边界,需要弱引用/owner guard
Memento可保存并恢复一个页面/section 的导航状态不是数据库持久化对象
tdataTelegram Desktop 本地工作数据目录里面既有全局映射,也有分账号加密文件和缓存
localKey用于保护账号本地数据的随机密钥本地 passcode 派生的是保护 localKey 的 key,不直接逐文件加密

独立学习资料 · 基于 Telegram Desktop v7.0.6