1mod dut;
8pub mod harness;
9pub mod node;
10
11use crate::{Driver, server};
12use fidl::endpoints::{RequestStream, ServerEnd};
13use fidl_fuchsia_logger as flogger;
14use fuchsia_component::client::connect_channel_to_protocol;
15use std::sync::Arc;
16
17pub(crate) unsafe fn get_driver_from_token<'a, T: Driver>(driver_token: usize) -> Option<&'a T> {
24 let driver_server = unsafe { &*(driver_token as *const server::DriverServer<T>) };
25 driver_server.testing_get_driver()
26}
27
28pub(crate) fn logsink_connector(server_end: ServerEnd<flogger::LogSinkMarker>) {
30 let (stream, handle) = server_end.into_stream_and_control_handle();
31
32 handle
35 .send_on_init(flogger::LogSinkOnInitRequest {
36 buffer: None,
37 interest: None,
38 ..Default::default()
39 })
40 .expect("failed to send on init");
41
42 drop(handle);
43
44 let inner = stream.into_inner().0;
45 let server_inner = Arc::into_inner(inner).expect("no other refs.");
46 let channel = server_inner.into_channel().into_zx_channel();
47
48 if let Err(e) = connect_channel_to_protocol::<flogger::LogSinkMarker>(channel) {
50 log::warn!("Failed to connect to LogSink: {:?}", e);
51 }
52}