FOG 代码组织

Modules of Project FOG

该图显示了 Project FOG 的不同模块。

FOG 控制

此模块是 Firefox 和 Glean 之间的粘合剂。

  • 代码位于 toolkit/components/glean/src 中。

  • 它使用 Rust 编写。

  • 该 crate 名为 fog_control

  • 它不会发布到 crates.io。

  • 它不会被 mozilla-central 中的其他 Rust crate 使用。

此模块负责

  • 收集和组装 客户端信息

  • 通过 Rust 语言绑定配置 Glean SDK

  • 监视 Firefox 遥测数据上传偏好设置 (datareporting.healthreport.uploadEnabled)

  • 调度内置 Ping

  • 控制 Ping 上传工作线程

  • 传递 IPC 缓冲区

它调用 glean(Glean SDK Rust 语言绑定)来

  • 配置和初始化 Glean

  • 切换 upload_enabled

  • 获取上传任务

它调用 fog

  • 传递 IPC 缓冲区

  • 记录到其自身的指标

FOG API

此模块为 mozilla-central 中的 Glean 提供面向用户的 API。

  • 代码位于 toolkit/components/glean/api 中。

  • 它使用 Rust 编写。

  • 该 crate 名为 fog

  • 它不会发布到 crates.io。

  • 它可以被 mozilla-central 中的其他 Rust crate 使用,用于它们的 Glean 使用。

此模块负责

  • 在 Rust 中公开特定的指标 API

  • 包装指标实现以处理 IPC

  • 公开 FFI 功能,以便在上面实现其他语言 API。另请参见 添加新的指标类型

它调用 glean(Glean SDK Rust 语言绑定)用于

  • 指标类型(包括 Ping)