pub struct InputPipelineAssembly { /* private fields */ }
Expand description

An input pipeline assembly.

Represents a partial stage of the input pipeline which accepts inputs through an asynchronous sender channel, and emits outputs through an asynchronous receiver channel. Use [new] to create a new assembly. Use [add_handler], or [add_all_handlers] to add the input pipeline handlers to use. When done, InputPipeline::new can be used to make a new input pipeline.

§Implementation notes

Internally, when a new InputPipelineAssembly is created with multiple [InputHandler]s, the handlers are connected together using async queues. This allows fully streamed processing of input events, and also allows some pipeline stages to generate events spontaneously, i.e. without an external stimulus.

Implementations§

source§

impl InputPipelineAssembly

source

pub fn new(metrics_logger: MetricsLogger) -> Self

Create a new but empty InputPipelineAssembly. Use [add_handler] or similar to add new handlers to it.

source

pub fn add_handler(self, handler: Rc<dyn InputHandler>) -> Self

Adds another input_handler::InputHandler into the InputPipelineAssembly. The handlers are invoked in the order they are added, and successive handlers are glued together using unbounded queues. Returns Self for chaining.

source

pub fn add_all_handlers(self, handlers: Vec<Rc<dyn InputHandler>>) -> Self

Adds all handlers into the assembly in the order they appear in handlers.

source

pub fn add_display_ownership( self, display_ownership_event: Event, input_handlers_node: &Node ) -> InputPipelineAssembly

Adds the DisplayOwnership to the input pipeline. The display_ownership_event is assumed to be the Scenic event used to report changes in display ownership, obtained by fuchsia.ui.scenic/Scenic.GetDisplayOwnershipEvent. This code has no way to check whether that invariant is upheld, so this is something that the user will need to ensure.

source

pub fn add_autorepeater(self, input_handlers_node: &Node) -> Self

Adds the autorepeater into the input pipeline assembly. The autorepeater is installed after any handlers that have been already added to the assembly.

source

pub fn add_focus_listener( self, focus_chain_publisher: FocusChainProviderPublisher ) -> Self

Adds a focus listener task into the input pipeline assembly. The focus listener forwards focus chain changes to fuchsia.ui.keyboard.focus.Controller and watchers of fuchsia.ui.focus.FocusChainProvider. It is required for the correct operation of the implementors of those protocols, e.g. text_manager.

§Arguments:
  • focus_chain_publisher: to forward to other downstream watchers.
§Requires:
  • fuchsia.ui.views.FocusChainListenerRegistry: to register for updates.
  • fuchsia.ui.keyboard.focus.Controller: to forward to text_manager.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsRcAny for T
where T: Any,

source§

fn as_rc_any(self: Rc<T>) -> Rc<dyn Any>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<St> WithTag for St

source§

fn tagged<T>(self, tag: T) -> Tagged<T, St>

Produce a new stream from this one which yields item tupled with a constant tag