Skip to main content

lightswitch_metadata/
task_metadata.rs

1use crate::taskname::TaskName;
2use crate::types::{MetadataLabel, TaskKey, TaskMetadataProvider, TaskMetadataProviderError};
3
4pub struct TaskMetadata {}
5
6impl TaskMetadataProvider for TaskMetadata {
7    fn get_metadata(
8        &self,
9        task_key: TaskKey,
10    ) -> Result<Vec<MetadataLabel>, TaskMetadataProviderError> {
11        let task_name = TaskName::for_task(task_key.tid).unwrap_or(TaskName::errored());
12        let pid = task_key.pid;
13        Ok(vec![
14            MetadataLabel::from_number_value("pid".into(), task_key.tid.into(), "task-id".into()),
15            MetadataLabel::from_string_value("thread.name".into(), task_name.current_thread),
16            MetadataLabel::from_string_value("process.name".into(), task_name.main_thread),
17            MetadataLabel::from_number_value("pid".into(), pid.into(), "task-tgid".into()),
18        ])
19    }
20}