forked from mirrors/gecko-dev
		
	
		
			
				
	
	
	
	
		
			1.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.7 KiB
		
	
	
	
	
	
	
	
FOG code organization
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)
