pub async fn config_builder_from_stream<'a, N: Clone, M: DriverMem, Q: QueueCheck + ?Sized>(
builder: DeviceBuilder<N>,
stream: &mut VirtioDeviceRequestStream,
queues: &Q,
mem: &'a M,
) -> Result<(Device<'a, N>, VirtioDeviceReadyResponder), DeviceError>Expand description
Process a VirtioDeviceRequestStream to configure all the queues.
Runs a simple message loop to process all VirtioDeviceRequest::ConfigureQueue until a
VirtioDeviceRequest::Ready is received. If a device expects no other messages during
this configuration then this automates the building. Otherwise if other messages are
expected clients will need to run their own message loop and use [add_queue].
On success a Device and a VirtioDeviceReadyResponder will be returned. The
negotiated features can be queried and then the [responder]
(VirtioDeviceReadyResponder) can be signaled once the device is satisfied and able to start.
A reference to a QueueCheck must be provided for the builder to know whether to accept
or reject any particular queue configuration request.