FOG code organization¶
Note
Project FOG is currently being designed and implemented. This documentation is incomplete and may change significantly before FOG is usable inside mozilla-central.
The diagram shows the different modules of Project FOG.
FOG control¶
This module is the glue between Firefox and Glean.
The code lives in
toolkit/components/glean/src
.It is written in Rust.
The crate is named
fog_control
.It is not published to crates.io.
It is not consumed by other Rust crates inside mozilla-central.
This module is responsible for
collecting and assembling the client information
configuring the Glean SDK via the Rust Language Binding
watching the Firefox Telemetry data upload preference (
datareporting.healthreport.uploadEnabled
)scheduling builtin pings
controling ping upload workers
passing IPC buffers
It calls into glean
(the Glean SDK Rust Language Binding) to:
configure and initialize Glean
toggle
upload_enabled
get upload tasks
It calls into fog
to:
pass IPC buffers
record to its own metrics
FOG API¶
This module provides the user-facing API for Glean inside mozilla-central.
The code lives in
toolkit/components/glean/api
.It is written in Rust.
The crate is named
fog
.It is not published to crates.io.
It can be consumed by other Rust crates inside mozilla-central for their Glean usage.
This module is responsible for
exposing a specific metric API in Rust
wrapping metric implementations for handling IPC
exposing FFI functionality to implement other language APIs on top. See also Adding a New Metric Type.
It calls into glean
(the Glean SDK Rust Language Binding) for:
metric types (including pings)