[events] Remove sync event concepts from fuchsia.sys2
Because sync events are not supported in static and dynamic
event streams, we can simplify the logic inside component manager
and remove sync event concepts from FIDL.
Change-Id: I4453993db4a975568e6743ef29c1a97d98acd74b
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/656544
API-Review: Gary Bressler <geb@google.com>
Reviewed-by: Miguel Flores <miguelfrde@google.com>
Reviewed-by: Stephen Demos <sdemos@google.com>
Reviewed-by: Suraj Malhotra <surajmalhotra@google.com>
Commit-Queue: Xyan Bhatnagar <xbhatnag@google.com>
diff --git a/examples/fidl/echo-realm/src/lib.rs b/examples/fidl/echo-realm/src/lib.rs
index 06f1943..af66c3c 100644
--- a/examples/fidl/echo-realm/src/lib.rs
+++ b/examples/fidl/echo-realm/src/lib.rs
@@ -13,10 +13,7 @@
// Subscribe to started events for child components
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Stopped::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Stopped::NAME])])
.await
.context("failed to subscribe to EventSource")?;
diff --git a/sdk/fidl/fuchsia.sys2/events.fidl b/sdk/fidl/fuchsia.sys2/events.fidl
index 0ea3c63..48db710 100644
--- a/sdk/fidl/fuchsia.sys2/events.fidl
+++ b/sdk/fidl/fuchsia.sys2/events.fidl
@@ -15,16 +15,6 @@
/// The maximum string length of an error description.
const MAX_ERROR_DESCRIPTION_LENGTH uint64 = 100;
-/// Describes the consumption mode of an event.
-type EventMode = strict enum {
- /// The event source dispatches the event and doesn't wait for the listener
- /// to handle it.
- ASYNC = 0;
-
- /// The event source awaits the listener to notify it that it's done handling the event.
- SYNC = 1;
-};
-
/// These EventTypes are used for the EventStream protocol.
/// They are FIDL versions of the EventType enum in hooks.rs and have
/// the same meaning.
@@ -280,18 +270,12 @@
/// Optional payload for some event types
2: event_result EventResult;
-
- /// Handler for resuming from event
- /// This will be absent if this is an async event.
- 3: handler client_end:Handler;
};
/// Indicates the event name to subscribe to with a given event mode.
type EventSubscription = table {
// The event names to subscribe to.
1: event_name fuchsia.component.name;
- /// The event mode with which to subscribe to the event names above.
- 2: mode EventMode;
};
/// Subscribe to events in component manager.
@@ -331,9 +315,3 @@
event Event;
});
};
-
-/// Every Event supports this basic handler to allow resumption.
-protocol Handler {
- /// Resumes/unblocks from an event.
- Resume() -> ();
-};
diff --git a/src/connectivity/network/testing/network-test-realm/tests/src/lib.rs b/src/connectivity/network/testing/network-test-realm/tests/src/lib.rs
index 9fdceb6..88ca8b7 100644
--- a/src/connectivity/network/testing/network-test-realm/tests/src/lib.rs
+++ b/src/connectivity/network/testing/network-test-realm/tests/src/lib.rs
@@ -707,10 +707,10 @@
component_events::events::EventSource::new().expect("failed to create event source");
let mut event_stream = event_source
- .subscribe(vec![component_events::events::EventSubscription::new(
- vec![component_events::events::Started::NAME, component_events::events::Stopped::NAME],
- component_events::events::EventMode::Async,
- )])
+ .subscribe(vec![component_events::events::EventSubscription::new(vec![
+ component_events::events::Started::NAME,
+ component_events::events::Stopped::NAME,
+ ])])
.await
.expect("failed to subscribe to EventSource");
diff --git a/src/connectivity/network/tests/integration/common/src/lib.rs b/src/connectivity/network/tests/integration/common/src/lib.rs
index 030b537..706bba29 100644
--- a/src/connectivity/network/tests/integration/common/src/lib.rs
+++ b/src/connectivity/network/tests/integration/common/src/lib.rs
@@ -111,14 +111,14 @@
/// Gets a component event stream yielding component stopped events.
pub async fn get_component_stopped_event_stream() -> Result<component_events::events::EventStream> {
- use component_events::events::{self, Event as _, EventMode, EventSource, EventSubscription};
+ use component_events::events::{self, Event as _, EventSource, EventSubscription};
let event_source = EventSource::from_proxy(
fuchsia_component::client::connect_to_protocol::<fsys2::EventSourceMarker>()
.context("failed to connect to event source protocol")?,
);
event_source
- .subscribe(vec![EventSubscription::new(vec![events::Stopped::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![events::Stopped::NAME])])
.await
.context("failed to subscribe to `Stopped` events")
}
diff --git a/src/connectivity/network/tests/integration/management/src/lib.rs b/src/connectivity/network/tests/integration/management/src/lib.rs
index 8f6c69e..30a5b8a 100644
--- a/src/connectivity/network/tests/integration/management/src/lib.rs
+++ b/src/connectivity/network/tests/integration/management/src/lib.rs
@@ -538,14 +538,10 @@
.expect("create netstack realm");
let event_source = events::EventSource::new().expect("create event source");
let mut event_stream = event_source
- .subscribe(vec![events::EventSubscription::new(
- vec![events::Started::NAME, events::Stopped::NAME],
- // Event mode async means the framework doesn't wait for us to
- // observe and acknowledge the event to move forward. We don't need
- // for the framework to wait for us to acknowledge events, it is
- // sufficient for this test that we're passive observers.
- events::EventMode::Async,
- )])
+ .subscribe(vec![events::EventSubscription::new(vec![
+ events::Started::NAME,
+ events::Stopped::NAME,
+ ])])
.await
.expect("subscribe to events");
diff --git a/src/devices/tests/v2/driver-runner-integration/driver_runner_integration_test.rs b/src/devices/tests/v2/driver-runner-integration/driver_runner_integration_test.rs
index 04def82..77e28fe 100644
--- a/src/devices/tests/v2/driver-runner-integration/driver_runner_integration_test.rs
+++ b/src/devices/tests/v2/driver-runner-integration/driver_runner_integration_test.rs
@@ -36,10 +36,7 @@
// Set up our expected events.
let event_source = events::EventSource::new()?;
let mut started_stream = event_source
- .subscribe(vec![events::EventSubscription::new(
- vec![events::Started::NAME],
- events::EventMode::Async,
- )])
+ .subscribe(vec![events::EventSubscription::new(vec![events::Started::NAME])])
.await?;
let builder = RealmBuilder::new().await?;
diff --git a/src/diagnostics/archivist/tests/v2/src/logs/attribution.rs b/src/diagnostics/archivist/tests/v2/src/logs/attribution.rs
index e6d3d46..72600aa 100644
--- a/src/diagnostics/archivist/tests/v2/src/logs/attribution.rs
+++ b/src/diagnostics/archivist/tests/v2/src/logs/attribution.rs
@@ -4,7 +4,7 @@
use crate::{constants::*, logs::utils::Listener, test_topology};
use component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Started},
+ events::{Event, EventSource, EventSubscription, Started},
matcher::EventMatcher,
};
use diagnostics_hierarchy::assert_data_tree;
@@ -64,10 +64,8 @@
// a race condition in which the instance is started before the proper
// event matcher is ready.
let event_source = EventSource::new().unwrap();
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Started::NAME])]).await.unwrap();
let instance = builder.build().await.expect("create instance");
diff --git a/src/diagnostics/archivist/tests/v2/src/logs/lifecycle.rs b/src/diagnostics/archivist/tests/v2/src/logs/lifecycle.rs
index f17f9f1..5c286db 100644
--- a/src/diagnostics/archivist/tests/v2/src/logs/lifecycle.rs
+++ b/src/diagnostics/archivist/tests/v2/src/logs/lifecycle.rs
@@ -190,10 +190,8 @@
let event_source =
EventSource::from_proxy(client::connect_to_protocol::<EventSourceMarker>().unwrap());
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
let mut child_ref = ChildRef { name: LOG_AND_EXIT_COMPONENT.to_string(), collection: None };
reader.retry_if_empty(true);
for i in 1..50 {
diff --git a/src/diagnostics/archivist/tests/v2/src/logs/selectors.rs b/src/diagnostics/archivist/tests/v2/src/logs/selectors.rs
index 720cba9..3c4a9dfc 100644
--- a/src/diagnostics/archivist/tests/v2/src/logs/selectors.rs
+++ b/src/diagnostics/archivist/tests/v2/src/logs/selectors.rs
@@ -35,10 +35,8 @@
let event_source =
EventSource::from_proxy(client::connect_to_protocol::<EventSourceMarker>().unwrap());
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
// Start a few components.
let mut child_ref_a = ChildRef { name: "a".to_string(), collection: None };
diff --git a/src/diagnostics/archivist/tests/v2/src/utils.rs b/src/diagnostics/archivist/tests/v2/src/utils.rs
index 933296c..4816892 100644
--- a/src/diagnostics/archivist/tests/v2/src/utils.rs
+++ b/src/diagnostics/archivist/tests/v2/src/utils.rs
@@ -13,10 +13,8 @@
) {
let event_source =
EventSource::from_proxy(client::connect_to_protocol::<EventSourceMarker>().unwrap());
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
wait_for_component_stopped_event(
instance_child_name,
component,
diff --git a/src/diagnostics/detect/integration/integration_test.rs b/src/diagnostics/detect/integration/integration_test.rs
index 0eed327..ce4c76d 100644
--- a/src/diagnostics/detect/integration/integration_test.rs
+++ b/src/diagnostics/detect/integration/integration_test.rs
@@ -299,10 +299,8 @@
// Register for stopped events
let event_source = EventSource::new().unwrap();
- let mut exit_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut exit_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
// Start the component tree
let realm_instance = builder.build().await.unwrap();
diff --git a/src/lib/diagnostics/inspect/runtime/rust/src/lib.rs b/src/lib/diagnostics/inspect/runtime/rust/src/lib.rs
index 3b18933..96afc71 100644
--- a/src/lib/diagnostics/inspect/runtime/rust/src/lib.rs
+++ b/src/lib/diagnostics/inspect/runtime/rust/src/lib.rs
@@ -90,7 +90,7 @@
mod tests {
use super::*;
use component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Started},
+ events::{Event, EventSource, EventSubscription, Started},
matcher::EventMatcher,
};
use fdio;
@@ -119,7 +119,7 @@
// app.start_with_binder_sync during post-migration cleanup.
let event_source = EventSource::new().expect("failed to create EventSource");
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME])])
.await
.expect("failed to subscribe to EventSource");
diff --git a/src/lib/fuchsia-component-test/src/lib.rs b/src/lib/fuchsia-component-test/src/lib.rs
index 13330da..bbce59e8 100644
--- a/src/lib/fuchsia-component-test/src/lib.rs
+++ b/src/lib/fuchsia-component-test/src/lib.rs
@@ -6,7 +6,7 @@
anyhow::{format_err, Context as _},
cm_rust,
component_events::{
- events::{Event as CeEvent, EventMode, EventSource, EventSubscription, Started},
+ events::{Event as CeEvent, EventSource, EventSubscription, Started},
matcher::EventMatcher,
},
fidl::endpoints::{self, DiscoverableProtocolMarker, ServerEnd},
@@ -276,7 +276,7 @@
pub async fn start_with_binder_sync(&self) -> Result<(), anyhow::Error> {
let event_source = EventSource::new().context("failed to create EventSource")?;
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME])])
.await
.context("failed to subscribe to EventSource")?;
diff --git a/src/lib/fuchsia-component-test/tests/scoped_instance/lib.rs b/src/lib/fuchsia-component-test/tests/scoped_instance/lib.rs
index 9007a5c..d39c315 100644
--- a/src/lib/fuchsia-component-test/tests/scoped_instance/lib.rs
+++ b/src/lib/fuchsia-component-test/tests/scoped_instance/lib.rs
@@ -36,10 +36,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
diff --git a/src/modular/bin/basemgr/basemgr_v1_to_v2_test_realm.rs b/src/modular/bin/basemgr/basemgr_v1_to_v2_test_realm.rs
index 02c7bcd..e817606 100644
--- a/src/modular/bin/basemgr/basemgr_v1_to_v2_test_realm.rs
+++ b/src/modular/bin/basemgr/basemgr_v1_to_v2_test_realm.rs
@@ -50,7 +50,7 @@
// Subscribe to stopped events for child components
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME])])
.await
.context("failed to subscribe to EventSource")?;
diff --git a/src/storage/fshost-rust/tests/src/main.rs b/src/storage/fshost-rust/tests/src/main.rs
index 14d02f4..3925540 100644
--- a/src/storage/fshost-rust/tests/src/main.rs
+++ b/src/storage/fshost-rust/tests/src/main.rs
@@ -5,7 +5,7 @@
use {
anyhow::Error,
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Stopped},
+ events::{Event, EventSource, EventSubscription, Stopped},
matcher::EventMatcher,
},
fidl_fuchsia_boot as fboot, fidl_fuchsia_fshost as fshost, fidl_fuchsia_io as fio,
@@ -64,10 +64,8 @@
let realm = new_realm().await.unwrap();
let event_source = EventSource::new().unwrap();
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
let admin = realm.root.connect_to_protocol_at_exposed_dir::<fshost::AdminMarker>().unwrap();
admin.shutdown().await.unwrap();
diff --git a/src/sys/component_manager/src/elf_runner/tests/lifecycle/component_exit.rs b/src/sys/component_manager/src/elf_runner/tests/lifecycle/component_exit.rs
index 2d89a59..424142f 100644
--- a/src/sys/component_manager/src/elf_runner/tests/lifecycle/component_exit.rs
+++ b/src/sys/component_manager/src/elf_runner/tests/lifecycle/component_exit.rs
@@ -6,8 +6,8 @@
anyhow::Error,
component_events::{
events::{
- self as events, CapabilityRequested, Event, EventMode, EventSource, EventStream,
- EventStreamError, EventSubscription,
+ self as events, CapabilityRequested, Event, EventSource, EventStream, EventStreamError,
+ EventSubscription,
},
matcher::EventMatcher,
sequence::EventSequence,
@@ -23,7 +23,7 @@
async fn test_exit_detection() {
let event_source = EventSource::new().unwrap();
let event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![events::Stopped::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![events::Stopped::NAME])])
.await
.unwrap();
@@ -55,10 +55,7 @@
// component tree.
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![events::Started::NAME, events::Stopped::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![events::Started::NAME, events::Stopped::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle.rs b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle.rs
index 42e7556..eed0316 100644
--- a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle.rs
+++ b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Started, Stopped},
+ events::{Event, EventSource, EventSubscription, Started, Stopped},
matcher::{EventMatcher, ExitStatusMatcher},
sequence::EventSequence,
},
@@ -15,10 +15,7 @@
async fn test_normal_behavior() {
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Stopped::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Stopped::NAME])])
.await
.unwrap();
let collection_name = String::from("test-collection");
diff --git a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout.rs b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout.rs
index d7acb03..e0f5122 100644
--- a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout.rs
+++ b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Purged, Started, Stopped},
+ events::{Event, EventSource, EventSubscription, Purged, Started, Stopped},
matcher::{EventMatcher, ExitStatusMatcher},
sequence::{EventSequence, Ordering},
},
@@ -19,29 +19,18 @@
async fn test_stop_timeouts() {
let event_source = EventSource::new().unwrap();
- let event_stream_start = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let event_stream_start =
+ event_source.subscribe(vec![EventSubscription::new(vec![Started::NAME])]).await.unwrap();
let event_stream_1 = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
let event_stream_2 = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
let event_stream_3 = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
let collection_name = String::from("test-collection");
diff --git a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout_unresponsive.rs b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout_unresponsive.rs
index 0a59024..600952f 100644
--- a/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout_unresponsive.rs
+++ b/src/sys/component_manager/src/elf_runner/tests/lifecycle/lifecycle_timeout_unresponsive.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Purged, Started, Stopped},
+ events::{Event, EventSource, EventSubscription, Purged, Started, Stopped},
matcher::{EventMatcher, ExitStatusMatcher},
sequence::{EventSequence, Ordering},
},
@@ -16,30 +16,19 @@
async fn test_stop_timeouts() {
let event_source = EventSource::new().unwrap();
- let started_event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let started_event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Started::NAME])]).await.unwrap();
let event_stream_root = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
let event_stream_custom = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
let event_stream_inherited = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Stopped::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Stopped::NAME, Purged::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/src/model/events/serve.rs b/src/sys/component_manager/src/model/events/serve.rs
index 3e15d80..b7869dd 100644
--- a/src/sys/component_manager/src/model/events/serve.rs
+++ b/src/sys/component_manager/src/model/events/serve.rs
@@ -16,14 +16,11 @@
},
cm_moniker::InstancedExtendedMoniker,
cm_rust::{CapabilityName, EventMode},
- fidl::endpoints::{create_request_stream, ClientEnd, Proxy},
+ fidl::endpoints::{ClientEnd, Proxy},
fidl_fuchsia_component as fcomponent, fidl_fuchsia_io as fio, fidl_fuchsia_sys2 as fsys,
- fuchsia_trace as trace, fuchsia_zircon as zx,
- futures::{
- future::BoxFuture, lock::Mutex, select, stream::FuturesUnordered, FutureExt, StreamExt,
- TryStreamExt,
- },
- log::{debug, error, info, warn},
+ fuchsia_zircon as zx,
+ futures::{lock::Mutex, TryStreamExt},
+ log::{error, info, warn},
moniker::{AbsoluteMoniker, AbsoluteMonikerBase, RelativeMoniker, RelativeMonikerBase},
std::sync::Arc,
};
@@ -41,18 +38,13 @@
// Subscribe to events.
let requests = events
.into_iter()
- .filter(|request| {
- request.event_name.is_some() && request.mode.is_some()
- })
+ .filter(|request| request.event_name.is_some())
.map(|request| EventSubscription {
event_name: request
.event_name
.map(|name| CapabilityName::from(name))
.unwrap(),
- mode: match request.mode {
- Some(fsys::EventMode::Sync) => EventMode::Sync,
- _ => EventMode::Async,
- },
+ mode: EventMode::Async,
})
.collect();
@@ -93,42 +85,22 @@
client_end: ClientEnd<fsys::EventStreamMarker>,
) {
let listener = client_end.into_proxy().expect("cannot create proxy from client_end");
- // Track sync event handlers here so they're automatically dropped if this event stream is dropped.
- let mut handlers = FuturesUnordered::new();
- loop {
- trace::duration!("component_manager", "events:fidl_get_next");
- // Poll both the event stream and the handlers until both futures complete.
- select! {
- maybe_event = event_stream.next().fuse() => {
- match maybe_event {
- Some(event) => {
- // Create the basic Event FIDL object.
- // This will begin serving the Handler protocol asynchronously.
- let (opt_fut, event_fidl_object) = match create_event_fidl_object(event).await {
- Err(e) => {
- warn!("Failed to create event object: {:?}", e);
- continue;
- }
- Ok(res) => res,
- };
- if let Some(fut) = opt_fut {
- handlers.push(fut);
- }
- if let Err(e) = listener.on_event(event_fidl_object) {
- // It's not an error for the client to drop the listener.
- if !e.is_closed() {
- warn!("Unexpected error while serving EventStream: {:?}", e);
- }
- break;
- }
- },
- None => {
- break;
- },
- }
- },
- _ = handlers.select_next_some() => {},
+ while let Some(event) = event_stream.next().await {
+ // Create the basic Event FIDL object.
+ let event_fidl_object = match create_event_fidl_object(event).await {
+ Err(e) => {
+ warn!("Failed to create event object: {:?}", e);
+ continue;
+ }
+ Ok(res) => res,
+ };
+ if let Err(e) = listener.on_event(event_fidl_object) {
+ // It's not an error for the client to drop the listener.
+ if !e.is_closed() {
+ warn!("Unexpected error while serving EventStream: {:?}", e);
+ }
+ return;
}
}
}
@@ -298,12 +270,8 @@
}))
}
-/// Creates the basic FIDL Event object containing the event type, target_moniker
-/// and basic handler for resumption. It returns a tuple of the future to run the
-/// handler, and the FIDL event.
-async fn create_event_fidl_object(
- event: Event,
-) -> Result<(Option<BoxFuture<'static, ()>>, fsys::Event), fidl::Error> {
+/// Creates the basic FIDL Event object
+async fn create_event_fidl_object(event: Event) -> Result<fsys::Event, fidl::Error> {
let moniker_string = match (&event.event.target_moniker, &event.scope_moniker) {
(moniker @ InstancedExtendedMoniker::ComponentManager, _) => moniker.to_string(),
(
@@ -330,33 +298,5 @@
..fsys::EventHeader::EMPTY
});
let event_result = maybe_create_event_result(&event.event.result).await?;
- let (opt_fut, handler) = maybe_serve_handler_async(event);
- Ok((opt_fut, fsys::Event { header, handler, event_result, ..fsys::Event::EMPTY }))
-}
-
-/// Serves the server end of Handler FIDL protocol asynchronously
-fn maybe_serve_handler_async(
- event: Event,
-) -> (Option<BoxFuture<'static, ()>>, Option<ClientEnd<fsys::HandlerMarker>>) {
- if event.mode() == EventMode::Async {
- return (None, None);
- }
- let (client_end, mut stream) = create_request_stream::<fsys::HandlerMarker>()
- .expect("could not create request stream for handler protocol");
- let handler_fut = async move {
- // Expect exactly one call to Resume
- let mut out_responder = None;
- if let Ok(Some(fsys::HandlerRequest::Resume { responder })) = stream.try_next().await {
- out_responder = Some(responder);
- }
- // Always resume the event even if the stream has closed.
- event.resume();
- if let Some(responder) = out_responder {
- if let Err(e) = responder.send() {
- debug!("failed to respond to Resume request: {:?}", e);
- }
- }
- }
- .boxed();
- (Some(handler_fut), Some(client_end))
+ Ok(fsys::Event { header, event_result, ..fsys::Event::EMPTY })
}
diff --git a/src/sys/component_manager/src/model/testing/routing_test_helpers.rs b/src/sys/component_manager/src/model/testing/routing_test_helpers.rs
index 3f0f9a5..f385dda 100644
--- a/src/sys/component_manager/src/model/testing/routing_test_helpers.rs
+++ b/src/sys/component_manager/src/model/testing/routing_test_helpers.rs
@@ -1209,10 +1209,6 @@
let subscribe_future = event_source_proxy.subscribe(
&mut vec![fsys::EventSubscription {
event_name: Some(event.event_name.to_string()),
- mode: Some(match event.mode {
- EventMode::Sync => fsys::EventMode::Sync,
- _ => fsys::EventMode::Async,
- }),
..fsys::EventSubscription::EMPTY
}]
.into_iter(),
diff --git a/src/sys/component_manager/tests/base_resolver_test/base_resolver_test.rs b/src/sys/component_manager/tests/base_resolver_test/base_resolver_test.rs
index b29d0a4..a50c8da 100644
--- a/src/sys/component_manager/tests/base_resolver_test/base_resolver_test.rs
+++ b/src/sys/component_manager/tests/base_resolver_test/base_resolver_test.rs
@@ -26,10 +26,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Started::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
@@ -57,10 +55,7 @@
let event_source = EventSource::from_proxy(proxy);
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Resolved::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Resolved::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/tests/binder/src/binder_integration_test.rs b/src/sys/component_manager/tests/binder/src/binder_integration_test.rs
index 15de6bc..bf1e556 100644
--- a/src/sys/component_manager/tests/binder/src/binder_integration_test.rs
+++ b/src/sys/component_manager/tests/binder/src/binder_integration_test.rs
@@ -21,10 +21,7 @@
);
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Stopped::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Stopped::NAME])])
.await
.expect("failed to create event stream");
diff --git a/src/sys/component_manager/tests/destruction/integration_test.rs b/src/sys/component_manager/tests/destruction/integration_test.rs
index 25c7a83..84fbf77 100644
--- a/src/sys/component_manager/tests/destruction/integration_test.rs
+++ b/src/sys/component_manager/tests/destruction/integration_test.rs
@@ -97,10 +97,7 @@
let event_source = EventSource::from_proxy(proxy);
let event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Destroyed::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Destroyed::NAME, Purged::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/tests/diagnostics/cleanup.rs b/src/sys/component_manager/tests/diagnostics/cleanup.rs
index 518db95..10f3c23 100644
--- a/src/sys/component_manager/tests/diagnostics/cleanup.rs
+++ b/src/sys/component_manager/tests/diagnostics/cleanup.rs
@@ -43,10 +43,8 @@
});
let event_source = EventSource::new().expect("conenct to event source");
- let event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Purged::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Purged::NAME])]).await.unwrap();
// Destroy the parent component.
let mut child_ref =
diff --git a/src/sys/component_manager/tests/diagnostics/integration_test.rs b/src/sys/component_manager/tests/diagnostics/integration_test.rs
index f6a174a..5515a76 100644
--- a/src/sys/component_manager/tests/diagnostics/integration_test.rs
+++ b/src/sys/component_manager/tests/diagnostics/integration_test.rs
@@ -31,10 +31,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/elf_runner/elf_runner_test.rs b/src/sys/component_manager/tests/elf_runner/elf_runner_test.rs
index 8cf71bbd..555b09b 100644
--- a/src/sys/component_manager/tests/elf_runner/elf_runner_test.rs
+++ b/src/sys/component_manager/tests/elf_runner/elf_runner_test.rs
@@ -28,10 +28,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/events/components/async/reporter.rs b/src/sys/component_manager/tests/events/components/async/reporter.rs
index 21e33af..d9fad23 100644
--- a/src/sys/component_manager/tests/events/components/async/reporter.rs
+++ b/src/sys/component_manager/tests/events/components/async/reporter.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Purged, Started},
+ events::{Event, EventSource, EventSubscription, Purged, Started},
matcher::EventMatcher,
},
fuchsia_component_test::ScopedInstance,
@@ -15,10 +15,7 @@
// Track all the starting child components.
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Purged::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Purged::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/tests/events/components/resolved_error/reporter.rs b/src/sys/component_manager/tests/events/components/resolved_error/reporter.rs
index bbfc68a..26a59b0 100644
--- a/src/sys/component_manager/tests/events/components/resolved_error/reporter.rs
+++ b/src/sys/component_manager/tests/events/components/resolved_error/reporter.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{Event, EventMode, EventSource, EventSubscription, Resolved, Started},
+ events::{Event, EventSource, EventSubscription, Resolved, Started},
matcher::EventMatcher,
},
fidl_fuchsia_component as fcomponent, fidl_fuchsia_component_decl as fdecl,
@@ -17,10 +17,7 @@
// Track all the starting child components.
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Resolved::NAME, Started::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Resolved::NAME, Started::NAME])])
.await
.unwrap();
diff --git a/src/sys/component_manager/tests/events/components/synthesis/reporter.rs b/src/sys/component_manager/tests/events/components/synthesis/reporter.rs
index 9aacf80..4098081 100644
--- a/src/sys/component_manager/tests/events/components/synthesis/reporter.rs
+++ b/src/sys/component_manager/tests/events/components/synthesis/reporter.rs
@@ -5,8 +5,7 @@
use {
assert_matches::assert_matches,
component_events::events::{
- Destroyed, DirectoryReady, Event, EventMode, EventSource, EventSubscription, Running,
- Started,
+ Destroyed, DirectoryReady, Event, EventSource, EventSubscription, Running, Started,
},
fidl_fuchsia_sys2 as fsys,
fuchsia_component_test::ScopedInstance,
@@ -18,10 +17,8 @@
#[fuchsia::component]
async fn main() {
let event_source = EventSource::new().unwrap();
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Started::NAME])]).await.unwrap();
// Make 4 components: 1 directory ready child and 3 stub children
let mut instances = vec![];
@@ -61,10 +58,11 @@
// Subscribe to events.
let event_source = EventSource::new().unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Running::NAME, Destroyed::NAME, DirectoryReady::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![
+ Running::NAME,
+ Destroyed::NAME,
+ DirectoryReady::NAME,
+ ])])
.await
.unwrap();
diff --git a/src/sys/component_manager/tests/events/integration_test.rs b/src/sys/component_manager/tests/events/integration_test.rs
index 77b39e6..57f47ac 100644
--- a/src/sys/component_manager/tests/events/integration_test.rs
+++ b/src/sys/component_manager/tests/events/integration_test.rs
@@ -29,10 +29,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/hub/hub_integration_test.rs b/src/sys/component_manager/tests/hub/hub_integration_test.rs
index 436aaaf..ee5ccbe 100644
--- a/src/sys/component_manager/tests/hub/hub_integration_test.rs
+++ b/src/sys/component_manager/tests/hub/hub_integration_test.rs
@@ -28,10 +28,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
instance.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/security_policy/util/lib.rs b/src/sys/component_manager/tests/security_policy/util/lib.rs
index d0a92fe..e0756ee 100644
--- a/src/sys/component_manager/tests/security_policy/util/lib.rs
+++ b/src/sys/component_manager/tests/security_policy/util/lib.rs
@@ -31,10 +31,7 @@
.await?;
let event_source = test.connect_to_event_source().await?;
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(
- vec![Started::NAME, Stopped::NAME],
- EventMode::Async,
- )])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME, Stopped::NAME])])
.await?;
test.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/services/src/service_routing_test.rs b/src/sys/component_manager/tests/services/src/service_routing_test.rs
index 7b73b1b..43f5d3d 100644
--- a/src/sys/component_manager/tests/services/src/service_routing_test.rs
+++ b/src/sys/component_manager/tests/services/src/service_routing_test.rs
@@ -5,7 +5,7 @@
use {
anyhow::{format_err, Context, Error},
component_events::{
- events::{Discovered, Event, EventMode, EventSource, EventSubscription, Started},
+ events::{Discovered, Event, EventSource, EventSubscription, Started},
matcher::EventMatcher,
sequence::*,
},
@@ -103,7 +103,7 @@
async fn start_branch() -> Result<ScopedInstance, Error> {
let event_source = EventSource::new()?;
let event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Discovered::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![Discovered::NAME])])
.await
.context("failed to subscribe to EventSource")?;
@@ -151,7 +151,7 @@
let event_source = EventSource::new()?;
let event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Started::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![Started::NAME])])
.await
.context("failed to subscribe to EventSource")?;
diff --git a/src/sys/component_manager/tests/storage/integration_test.rs b/src/sys/component_manager/tests/storage/integration_test.rs
index e76f684..b3a8da9 100644
--- a/src/sys/component_manager/tests/storage/integration_test.rs
+++ b/src/sys/component_manager/tests/storage/integration_test.rs
@@ -35,10 +35,8 @@
let event_source = EventSource::from_proxy(proxy);
- let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let mut event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
cm.start_component_tree().await.unwrap();
diff --git a/src/sys/component_manager/tests/utc-time/integration_test.rs b/src/sys/component_manager/tests/utc-time/integration_test.rs
index f7c9029..33144be7 100644
--- a/src/sys/component_manager/tests/utc-time/integration_test.rs
+++ b/src/sys/component_manager/tests/utc-time/integration_test.rs
@@ -60,10 +60,8 @@
.await
.expect("failed to connect to the EventSource protocol");
- let event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![Stopped::NAME], EventMode::Async)])
- .await
- .unwrap();
+ let event_stream =
+ event_source.subscribe(vec![EventSubscription::new(vec![Stopped::NAME])]).await.unwrap();
// Unblock the component_manager.
debug!("starting component tree");
diff --git a/src/sys/lib/component-events/src/events.rs b/src/sys/lib/component-events/src/events.rs
index 356cbe9d..0054043 100644
--- a/src/sys/lib/component-events/src/events.rs
+++ b/src/sys/lib/component-events/src/events.rs
@@ -4,7 +4,6 @@
use {
anyhow::{format_err, Context, Error},
- async_trait::async_trait,
fidl::endpoints::{create_endpoints, ProtocolMarker, ServerEnd},
fidl_fuchsia_io as fio, fidl_fuchsia_sys2 as fsys,
fuchsia_component::client::connect_channel_to_protocol,
@@ -45,23 +44,18 @@
proxy: fsys::EventSourceProxy,
}
-pub enum EventMode {
- Async,
-}
-
pub struct EventSubscription {
names: Vec<String>,
- mode: EventMode,
}
impl EventSubscription {
- pub fn new(names: Vec<impl ToString>, mode: EventMode) -> Self {
- Self { names: names.into_iter().map(|name| name.to_string()).collect(), mode }
+ pub fn new(names: Vec<impl ToString>) -> Self {
+ Self { names: names.into_iter().map(|name| name.to_string()).collect() }
}
}
impl From<Vec<String>> for EventSubscription {
fn from(event_names: Vec<String>) -> Self {
- Self { names: event_names, mode: EventMode::Async }
+ Self { names: event_names }
}
}
@@ -96,9 +90,6 @@
.iter()
.map(|name| fsys::EventSubscription {
event_name: Some(name.to_string()),
- mode: Some(match &request.mode {
- EventMode::Async => fsys::EventMode::Async,
- }),
..fsys::EventSubscription::EMPTY
})
.collect(),
@@ -156,7 +147,7 @@
}
/// Common features of any event - event type, target moniker, conversion function
-pub trait Event: Handler + TryFrom<fsys::Event, Error = anyhow::Error> {
+pub trait Event: TryFrom<fsys::Event, Error = anyhow::Error> {
const TYPE: fsys::EventType;
const NAME: &'static str;
@@ -167,34 +158,6 @@
fn is_err(&self) -> bool;
}
-/// Basic handler that resumes/unblocks from an Event
-#[must_use = "invoke resume() otherwise component manager will be halted indefinitely!"]
-#[async_trait]
-pub trait Handler: Sized + Send {
- /// Returns a proxy to unblock the associated component manager task.
- /// If this is an asynchronous event, then this will return none.
- fn handler_proxy(self) -> Option<fsys::HandlerProxy>;
-
- #[must_use = "futures do nothing unless you await on them!"]
- async fn resume<'a>(self) -> Result<(), fidl::Error> {
- if let Some(proxy) = self.handler_proxy() {
- return proxy.resume().await;
- }
- Ok(())
- }
-}
-
-/// Implemented on fsys::Event for resuming a generic event
-impl Handler for fsys::Event {
- fn handler_proxy(self) -> Option<fsys::HandlerProxy> {
- if let Some(handler) = self.handler {
- handler.into_proxy().ok()
- } else {
- None
- }
- }
-}
-
#[derive(Debug, PartialEq, Eq, Clone, Ord, PartialOrd)]
/// Simplifies the exit status represented by an Event. All stop status values
/// that indicate failure are crushed into `Crash`.
@@ -311,7 +274,6 @@
pub struct $event_type {
header: EventHeader,
result: Result<[<$event_type Payload>], [<$event_type Error>]>,
- handler: Option<fsys::HandlerProxy>,
}
impl $event_type {
@@ -446,19 +408,11 @@
return Err(format_err!("Incorrect event type"));
}
- let handler = event.handler.map(|h| h.into_proxy()).transpose()?;
-
- $event_type { header, handler, result }
+ $event_type { header, result }
};
Ok(event)
}
}
-
- impl Handler for $event_type {
- fn handler_proxy(self) -> Option<fsys::HandlerProxy> {
- self.handler
- }
- }
}
};
($event_type:ident, $event_name:ident) => {
diff --git a/src/sys/lib/component-events/src/log.rs b/src/sys/lib/component-events/src/log.rs
index 5399b66..23be982 100644
--- a/src/sys/lib/component-events/src/log.rs
+++ b/src/sys/lib/component-events/src/log.rs
@@ -5,7 +5,7 @@
use {
crate::{
descriptor::EventDescriptor,
- events::{EventMode, EventSource, EventStream, EventSubscription},
+ events::{EventSource, EventStream, EventSubscription},
},
anyhow::Error,
fuchsia_async as fasync,
@@ -30,9 +30,8 @@
event_source: &mut EventSource,
event_names: Vec<impl ToString>,
) -> Result<EventLog, Error> {
- let event_stream = event_source
- .subscribe(vec![EventSubscription::new(event_names, EventMode::Async)])
- .await?;
+ let event_stream =
+ event_source.subscribe(vec![EventSubscription::new(event_names)]).await?;
Ok(EventLog::new(event_stream))
}
diff --git a/src/sys/lib/component-events/src/sequence.rs b/src/sys/lib/component-events/src/sequence.rs
index 79d3fe1..24134fa 100644
--- a/src/sys/lib/component-events/src/sequence.rs
+++ b/src/sys/lib/component-events/src/sequence.rs
@@ -5,7 +5,7 @@
use {
crate::{
descriptor::EventDescriptor,
- events::{event_name, EventMode, EventSource, EventStream, EventSubscription},
+ events::{event_name, EventSource, EventStream, EventSubscription},
matcher::EventMatcher,
},
anyhow::{format_err, Error},
@@ -88,9 +88,8 @@
event_source: &mut EventSource,
) -> Result<BoxFuture<'a, Result<(), Error>>, Error> {
let event_names = self.event_names()?;
- let event_stream = event_source
- .subscribe(vec![EventSubscription::new(event_names, EventMode::Async)])
- .await?;
+ let event_stream =
+ event_source.subscribe(vec![EventSubscription::new(event_names)]).await?;
let expected_events = self.clone();
let (tx, rx) = oneshot::channel();
fasync::Task::spawn(async move {
diff --git a/src/sys/lib/routing/testing/src/lib.rs b/src/sys/lib/routing/testing/src/lib.rs
index 72b83b3..42d3136 100644
--- a/src/sys/lib/routing/testing/src/lib.rs
+++ b/src/sys/lib/routing/testing/src/lib.rs
@@ -320,8 +320,6 @@
test_use_event_from_parent,
test_use_event_from_grandparent,
test_event_filter_routing,
- test_event_mode_routing_failure,
- test_event_mode_routing_success,
test_use_builtin_event,
test_route_service_from_parent,
test_route_service_from_child,
@@ -2951,224 +2949,6 @@
}
/// a
- /// |
- /// b
- /// |
- /// c
- ///
- /// a: offer framework event "directory_ready" with mode "async".
- /// b: offers parent event "capabilty_ready" with mode "sync".
- /// c: uses realm event "directory_ready" with mode "sync"
- pub async fn test_event_mode_routing_failure(&self) {
- let components = vec![
- (
- "a",
- ComponentDeclBuilder::new()
- .offer(OfferDecl::Event(OfferEventDecl {
- source: OfferSource::Framework,
- source_name: "directory_ready".into(),
- target_name: "directory_ready".into(),
- target: OfferTarget::static_child("b".to_string()),
- filter: None,
- mode: cm_rust::EventMode::Async,
- }))
- .offer(OfferDecl::Protocol(OfferProtocolDecl {
- source: OfferSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target: OfferTarget::static_child("b".to_string()),
- dependency_type: DependencyType::Strong,
- }))
- .add_lazy_child("b")
- .build(),
- ),
- (
- "b",
- ComponentDeclBuilder::new()
- .offer(OfferDecl::Event(OfferEventDecl {
- source: OfferSource::Parent,
- source_name: "directory_ready".into(),
- target_name: "directory_ready".into(),
- target: OfferTarget::static_child("c".to_string()),
- filter: None,
- mode: cm_rust::EventMode::Sync,
- }))
- .offer(OfferDecl::Protocol(OfferProtocolDecl {
- source: OfferSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target: OfferTarget::static_child("c".to_string()),
- dependency_type: DependencyType::Strong,
- }))
- .add_lazy_child("c")
- .build(),
- ),
- (
- "c",
- ComponentDeclBuilder::new()
- .use_(UseDecl::Event(UseEventDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Parent,
- source_name: "directory_ready".into(),
- target_name: "directory_ready_foo_bar".into(),
- filter: None,
- mode: cm_rust::EventMode::Sync,
- }))
- .use_(UseDecl::Protocol(UseProtocolDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_path: "/svc/fuchsia.sys2.EventSource".try_into().unwrap(),
- }))
- .use_(UseDecl::Event(UseEventDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Framework,
- source_name: "resolved".into(),
- target_name: "resolved".into(),
- filter: None,
- mode: cm_rust::EventMode::Sync,
- }))
- .build(),
- ),
- ];
-
- let mut builder = T::new("a", components);
- builder.set_builtin_capabilities(vec![CapabilityDecl::Protocol(ProtocolDecl {
- name: "fuchsia.sys2.EventSource".into(),
- source_path: None,
- })]);
- let model = builder.build().await;
-
- model
- .check_use(
- vec!["b", "c"].into(),
- CheckUse::Event {
- request: EventSubscription::new(
- "directory_ready_foo_bar".into(),
- EventMode::Sync,
- ),
- expected_res: ExpectedResult::Err(zx::Status::UNAVAILABLE),
- },
- )
- .await;
- }
-
- /// a
- /// |
- /// b
- /// |
- /// c
- ///
- /// a: offer framework event "directory_ready" with mode "sync".
- /// b: offers parent event "capabilty_ready" with mode "async".
- /// c: uses realm event "directory_ready" with mode "async"
- pub async fn test_event_mode_routing_success(&self) {
- let components = vec![
- (
- "a",
- ComponentDeclBuilder::new()
- .offer(OfferDecl::Event(OfferEventDecl {
- source: OfferSource::Framework,
- source_name: "directory_ready".into(),
- target_name: "directory_ready".into(),
- target: OfferTarget::static_child("b".to_string()),
- filter: None,
- mode: cm_rust::EventMode::Sync,
- }))
- .offer(OfferDecl::Protocol(OfferProtocolDecl {
- source: OfferSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target: OfferTarget::static_child("b".to_string()),
- dependency_type: DependencyType::Strong,
- }))
- .add_lazy_child("b")
- .build(),
- ),
- (
- "b",
- ComponentDeclBuilder::new()
- .offer(OfferDecl::Event(OfferEventDecl {
- source: OfferSource::Parent,
- source_name: "directory_ready".into(),
- target_name: "directory_ready".into(),
- target: OfferTarget::static_child("c".to_string()),
- filter: None,
- mode: cm_rust::EventMode::Async,
- }))
- .offer(OfferDecl::Protocol(OfferProtocolDecl {
- source: OfferSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target: OfferTarget::static_child("c".to_string()),
- dependency_type: DependencyType::Strong,
- }))
- .add_lazy_child("c")
- .build(),
- ),
- (
- "c",
- ComponentDeclBuilder::new()
- .use_(UseDecl::Event(UseEventDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Parent,
- source_name: "directory_ready".into(),
- target_name: "directory_ready_foo_bar".into(),
- filter: None,
- mode: cm_rust::EventMode::Async,
- }))
- .use_(UseDecl::Protocol(UseProtocolDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Parent,
- source_name: "fuchsia.sys2.EventSource".try_into().unwrap(),
- target_path: "/svc/fuchsia.sys2.EventSource".try_into().unwrap(),
- }))
- .use_(UseDecl::Event(UseEventDecl {
- dependency_type: DependencyType::Strong,
- source: UseSource::Framework,
- source_name: "resolved".into(),
- target_name: "resolved".into(),
- filter: None,
- mode: cm_rust::EventMode::Sync,
- }))
- .build(),
- ),
- ];
-
- let mut builder = T::new("a", components);
- builder.set_builtin_capabilities(vec![CapabilityDecl::Protocol(ProtocolDecl {
- name: "fuchsia.sys2.EventSource".into(),
- source_path: None,
- })]);
- let model = builder.build().await;
-
- model
- .check_use(
- vec!["b", "c"].into(),
- CheckUse::Event {
- request: EventSubscription::new(
- "directory_ready_foo_bar".into(),
- EventMode::Async,
- ),
- expected_res: ExpectedResult::Ok,
- },
- )
- .await;
- model
- .check_use(
- vec!["b", "c"].into(),
- CheckUse::Event {
- request: EventSubscription::new(
- "directory_ready_foo_bar".into(),
- EventMode::Sync,
- ),
- expected_res: ExpectedResult::Err(zx::Status::UNAVAILABLE),
- },
- )
- .await;
- }
-
- /// a
///
/// a: uses registered built-in event "directory_ready"
/// b: uses unregistered event "unregistered" as a built-in; should fail
diff --git a/src/sys/startup/src/tests/integration_test.rs b/src/sys/startup/src/tests/integration_test.rs
index 6706fbf..a2e65e2 100644
--- a/src/sys/startup/src/tests/integration_test.rs
+++ b/src/sys/startup/src/tests/integration_test.rs
@@ -4,7 +4,7 @@
use {
component_events::{
- events::{CapabilityRouted, Event, EventMode, EventSubscription},
+ events::{CapabilityRouted, Event, EventSubscription},
matcher::EventMatcher,
},
fuchsia_async as fasync,
@@ -24,7 +24,7 @@
let event_source = test.connect_to_event_source().await.unwrap();
let mut event_stream = event_source
- .subscribe(vec![EventSubscription::new(vec![CapabilityRouted::NAME], EventMode::Async)])
+ .subscribe(vec![EventSubscription::new(vec![CapabilityRouted::NAME])])
.await
.unwrap();
test.start_component_tree().await.unwrap();