pub struct TouchSourceProxy { /* private fields */ }

Implementations§

source§

impl TouchSourceProxy

source

pub fn new(channel: AsyncChannel) -> Self

Create a new Proxy for fuchsia.ui.pointer/TouchSource.

source

pub fn take_event_stream(&self) -> TouchSourceEventStream

Get a Stream of events from the remote end of the protocol.

§Panics

Panics if the event stream was already taken.

source

pub fn watch( &self, responses: &[TouchResponse] ) -> QueryResponseFut<Vec<TouchEvent>>

A method for a client to receive touch pointer events.

This call is formulated as a “hanging get” pattern: the client asks for a set of recent events, and receives them via the callback. This pull-based approach ensures that clients consume events at their own pace; events don’t clog up the channel in an unbounded manner.

Flow control. The caller is allowed at most one in-flight |Watch| call at a time; it is a logical error to have concurrent calls to |Watch|. Non-compliance results in channel closure.

Client pacing. The server will dispatch events to the caller on a FIFO, lossless, best-effort basis, but the caller must allocate enough time to keep up with new events. An unresponsive client may be categorized as “App Not Responding” and targeted for channel closure.

Responses. The gesture disambiguation scheme relies on the server receiving a |TouchResponse| for each |TouchEvent|.|TouchPointerSample|; non-sample events should return an empty |TouchResponse| table to the server. Responses for previous events are fed to the server on the next call of |Watch| [1]. Each element in the |responses| vector is interpreted as the pairwise response to the event in the previous |events| vector; the vector lengths must match. Note that the client’s contract to respond to events starts as soon as it registers its endpoint with scenic, NOT when it first calls Watch().

Initial response. The first call to |Watch| must be an empty vector.

Event times. The timestamps on each event in the event vector are not guaranteed monotonic; touch events from different devices may be injected into Scenic at different times. Generally, events from a single device are expected to have monotonically increasing timestamps.

View parameters. Occasionally, changes in view or viewport require notifying the client. If a |TouchEvent| carries |ViewParameters|, these parameters apply to successive |TouchPointerSample|s until the next |ViewParameters|.

[1] The hanging get pattern enables straightforward API evolution, but unfortunately does not admit an idiomatic matching of response to event.

source

pub fn update_response( &self, interaction: &TouchInteractionId, response: &TouchResponse ) -> QueryResponseFut<()>

The gesture protocol allows a client to enact a “hold” on an open interaction of touch events; it prevents resolution of interaction ownership, even after the interaction closes. This method updates the client’s previous “hold” by replacing it with a response that allows ownership resolution to proceed.

See |TouchInteractionId| for how a stream is structured into interactions.

Flow control. The caller is allowed at most one |UpdateResponse| call per interaction, and it must be on a closed interaction. It is a logical error to call |UpdateResponse| when a normal response is possible with the |Watch| call.

Validity. This TouchResponse must not be another “hold” response, and the overwritten response is expected to be a “hold” response.

Trait Implementations§

source§

impl Clone for TouchSourceProxy

source§

fn clone(&self) -> TouchSourceProxy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TouchSourceProxy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Proxy for TouchSourceProxy

§

type Protocol = TouchSourceMarker

The protocol which this Proxy controls.
source§

fn from_channel(inner: AsyncChannel) -> Self

Create a proxy over the given channel.
source§

fn into_channel(self) -> Result<AsyncChannel, Self>

Attempt to convert the proxy back into a channel. Read more
source§

fn as_channel(&self) -> &AsyncChannel

Get a reference to the proxy’s underlying channel. Read more
§

fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>

Attempt to convert the proxy back into a client end. Read more
§

fn is_closed(&self) -> bool

Returns true if the proxy has received the PEER_CLOSED signal.
§

fn on_closed(&self) -> OnSignals<'_, Unowned<'_, Handle>>

Returns a future that completes when the proxy receives the PEER_CLOSED signal.
source§

impl TouchSourceProxyInterface for TouchSourceProxy

§

type WatchResponseFut = QueryResponseFut<Vec<TouchEvent>>

source§

fn watch(&self, responses: &[TouchResponse]) -> Self::WatchResponseFut

§

type UpdateResponseResponseFut = QueryResponseFut<()>

source§

fn update_response( &self, interaction: &TouchInteractionId, response: &TouchResponse ) -> Self::UpdateResponseResponseFut

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> 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
§

impl<T> Encode<Ambiguous1> for T

§

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
§

impl<T> Encode<Ambiguous2> for T

§

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> 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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<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