Note: This document covers API impact only. For more details, see the ABI compatibility page
- | init | step 1 | step 2 | step 3 | step 4 |
---|---|---|---|---|---|
fidl | link | link | link | ||
dart | link | link | |||
go | link | link | |||
hlcpp | link | link | |||
llcpp | link | link | |||
rust | link | link | link |
protocol Example { -> OnExistingEvent(); -> OnOldEvent(); };
class Server extends fidllib.Example { final _onExistingEventStreamController = StreamController<void>(); final _onOldEventStreamController = StreamController<void>(); @override Stream<void> get onExistingEvent => _onExistingEventStreamController.stream; @override Stream<void> get onOldEvent => _onOldEventStreamController.stream; } void expectEvents(fidllib.ExampleProxy client) async { await client.onExistingEvent.first; await client.onOldEvent.first; }
func expectEvents(c *lib.ExampleWithCtxInterface) {
_ = c.ExpectOnExistingEvent(context.Background())
_ = c.ExpectOnOldEvent(context.Background())
}
func sendEvents(p *lib.ExampleEventProxy) {
_ = p.OnExistingEvent()
_ = p.OnOldEvent()
}
void expectEvents(fidl_test::ExamplePtr* client) { client->events().OnExistingEvent = []() {}; client->events().OnOldEvent = []() {}; } void sendEvents(fidl::Binding<fidl_test::Example>* server) { server->events().OnExistingEvent(); server->events().OnOldEvent(); }
class AsyncEventHandler : public fidl::WireAsyncEventHandler<fidl_test::Example> { void OnExistingEvent(fidl::WireResponse<fidl_test::Example::OnExistingEvent>* event) override {} void OnOldEvent(fidl::WireResponse<fidl_test::Example::OnOldEvent>* event) override {} }; class SyncEventHandler : public fidl::WireSyncEventHandler<fidl_test::Example> { void OnExistingEvent(fidl::WireResponse<fidl_test::Example::OnExistingEvent>* event) override {} void OnOldEvent(fidl::WireResponse<fidl_test::Example::OnOldEvent>* event) override {} }; void sendEvents(fidl::ServerBindingRef<fidl_test::Example> server) { server->OnExistingEvent(); server->OnOldEvent(); }
fn send_events(stream: fidl_lib::ExampleRequestStream) -> Result<(), fidl::Error> { let control_handle = stream.control_handle(); control_handle.send_on_existing_event()?; control_handle.send_on_old_event()?; Ok(()) } async fn receive_events(client: fidl_lib::ExampleProxy) -> Result<(), fidl::Error> { let mut event_stream = client.take_event_stream(); while let Some(event) = event_stream.try_next().await? { match event { fidl_lib::ExampleEvent::OnExistingEvent { .. } => {} fidl_lib::ExampleEvent::OnOldEvent { .. } => {} } } Ok(()) }
[Transitional]
attribute.protocol Example { -> OnExistingEvent(); + @transitional -> OnOldEvent(); };
class Server extends fidllib.Example { final _onExistingEventStreamController = StreamController<void>(); - final _onOldEventStreamController = StreamController<void>(); @override Stream<void> get onExistingEvent => _onExistingEventStreamController.stream; - - @override - Stream<void> get onOldEvent => _onOldEventStreamController.stream; } void expectEvents(fidllib.ExampleProxy client) async { await client.onExistingEvent.first; - await client.onOldEvent.first; }
func expectEvents(c *lib.ExampleWithCtxInterface) { _ = c.ExpectOnExistingEvent(context.Background()) - _ = c.ExpectOnOldEvent(context.Background()) } func sendEvents(p *lib.ExampleEventProxy) { _ = p.OnExistingEvent() - _ = p.OnOldEvent() }
void expectEvents(fidl_test::ExamplePtr* client) { client->events().OnExistingEvent = []() {}; - client->events().OnOldEvent = []() {}; } - void sendEvents(fidl::Binding<fidl_test::Example>* server) { - server->events().OnExistingEvent(); - server->events().OnOldEvent(); - } + void sendEvents(fidl::Binding<fidl_test::Example>* server) { server->events().OnExistingEvent(); }
class AsyncEventHandler : public fidl::WireAsyncEventHandler<fidl_test::Example> { void OnExistingEvent(fidl::WireResponse<fidl_test::Example::OnExistingEvent>* event) override {} - void OnOldEvent(fidl::WireResponse<fidl_test::Example::OnOldEvent>* event) override {} }; class SyncEventHandler : public fidl::WireSyncEventHandler<fidl_test::Example> { void OnExistingEvent(fidl::WireResponse<fidl_test::Example::OnExistingEvent>* event) override {} - void OnOldEvent(fidl::WireResponse<fidl_test::Example::OnOldEvent>* event) override {} }; - void sendEvents(fidl::ServerBindingRef<fidl_test::Example> server) { - server->OnExistingEvent(); - server->OnOldEvent(); - } + void sendEvents(fidl::ServerBindingRef<fidl_test::Example> server) { server->OnExistingEvent(); }
#[allow(unreachable_patterns)]
to any client event stream match statements, and replace the arm for the event being removed with a catch-all (_
) arm.fn send_events(stream: fidl_lib::ExampleRequestStream) -> Result<(), fidl::Error> { let control_handle = stream.control_handle(); control_handle.send_on_existing_event()?; - control_handle.send_on_old_event()?; Ok(()) } async fn receive_events(client: fidl_lib::ExampleProxy) -> Result<(), fidl::Error> { let mut event_stream = client.take_event_stream(); while let Some(event) = event_stream.try_next().await? { + #[allow(unreachable_patterns)] match event { fidl_lib::ExampleEvent::OnExistingEvent { .. } => {} - fidl_lib::ExampleEvent::OnOldEvent { .. } => {} + _ => {} } } Ok(()) }
[Transitional]
attribute.protocol Example { -> OnExistingEvent(); - @transitional - -> OnOldEvent(); };
#[allow(unreachable_patterns)]
and the catch-all arm.fn send_events(stream: fidl_lib::ExampleRequestStream) -> Result<(), fidl::Error> { let control_handle = stream.control_handle(); control_handle.send_on_existing_event()?; Ok(()) } async fn receive_events(client: fidl_lib::ExampleProxy) -> Result<(), fidl::Error> { let mut event_stream = client.take_event_stream(); while let Some(event) = event_stream.try_next().await? { - #[allow(unreachable_patterns)] match event { fidl_lib::ExampleEvent::OnExistingEvent { .. } => {} - _ => {} } } Ok(()) }