blob: 4001cff956ba4a30c599f4b7eaa53e599a0c16ca [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use {
crate::model::{
events::{filter::EventFilter, synthesizer::EventSynthesisProvider},
hooks::{Event, EventPayload},
realm::Realm,
},
async_trait::async_trait,
std::sync::Arc,
};
pub struct RunningProvider {}
impl RunningProvider {
pub fn new() -> Self {
Self {}
}
}
#[async_trait]
impl EventSynthesisProvider for RunningProvider {
async fn provide(&self, realm: Arc<Realm>, _filter: EventFilter) -> Vec<Event> {
match &realm.lock_execution().await.runtime {
// No runtime means the component is not running. Don't synthesize anything.
None => vec![],
Some(runtime) => vec![Event::new(
&realm,
Ok(EventPayload::Running { started_timestamp: runtime.timestamp }),
)],
}
}
}