DispatchOutput

Struct DispatchOutput 

Source
pub struct DispatchOutput {
    pub events: Vec<HostEvent>,
    pub dequeued: Option<PendingWindowCreation>,
    pub removed_browser: Option<Browser>,
    pub browser_pane_register_result: Option<RegisterResult>,
    pub closed_browser_pane_label: Option<String>,
    pub drained_browser_pane_block_id: Option<String>,
    pub ended_drag_session: Option<DragSession>,
    pub pool_spawn_proceeding: bool,
    pub pool_size_after: Option<usize>,
    pub pool_destroyed_was_unpromoted: bool,
    pub promoted_pool_label: Option<String>,
}
Expand description

Output bundle returned from the reducer.

Most arms communicate via events alone, but several arms have callers that need an atomic value-returning op alongside the state mutation:

  • DequeuePendingWindowCreationdequeued: Option<PendingWindowCreation> (client.rs::on_after_created needs the popped entry’s fields to drive window_meta.insert + ReportWindowOpened).

  • UnregisterBrowserremoved_browser: Option<Browser> (the close path in browser_panes::AppStateCloseOps::take_browser_hwnd needs the Browser handle to extract its HWND for DestroyWindow. The atomicity matters: see codex P2 PR #660 — separating get + dispatch creates a window where concurrent readers can also resolve the label and act on the closing handle).

  • TryRegisterBrowserPaneLivebrowser_pane_register_result: Option<RegisterResult> (PR #5 H.1.d: BrowserPaneManager::create branches on Fresh/AlreadyLive/Closing).

  • EnqueueBrowserPaneCloseclosed_browser_pane_label: Option<String> (PR #5 H.1.d: the close path needs the label to call take_browser_hwnd without a separate live_browser_pane_label query that could race).

  • DrainBrowserPaneByLabeldrained_browser_pane_block_id: Option<String> (PR #5 H.1.d: drain_closed_label needs the block_id to dispatch CompleteBrowserPaneClose).

  • EndDragended_drag_session: Option<DragSession> (PR #5 H.3: complete_cross_drag / cancel_cross_drag need the session payload to emit the renderer-side cross-drag-end event, AND need the .is_some() signal to distinguish actual end vs drag_id mismatch).

  • PoolWindowSpawnStartpool_spawn_proceeding: bool (PR #5 H.4: spawn_pool_window’s single-flight semaphore. true = slot acquired, caller proceeds with CEF spawn; false = suppressed (already in flight, or QuitState != Running)).

  • PoolWindowReady / PoolWindowDestroyedBeforePromote / PopAndPromoteFrontPoolWindowpool_size_after: Option<usize> (PR #5 H.4: caller checks against POOL_TARGET_SIZE to decide whether to trigger a refill).

  • PoolWindowDestroyedBeforePromotepool_destroyed_was_unpromoted: bool (PR #5 H.4: caller gates pool-inventory reports on this — the post-promote close path doesn’t own that update).

  • PopAndPromoteFrontPoolWindowpromoted_pool_label: Option<String> (PR #5 H.4: caller needs the popped label to drive the CEF show + emit the pool:promote frontend event).

Default keeps the dispatch return type uniform across arms that don’t populate these fields.

Fields§

§events: Vec<HostEvent>§dequeued: Option<PendingWindowCreation>§removed_browser: Option<Browser>§browser_pane_register_result: Option<RegisterResult>§closed_browser_pane_label: Option<String>§drained_browser_pane_block_id: Option<String>§ended_drag_session: Option<DragSession>§pool_spawn_proceeding: bool§pool_size_after: Option<usize>§pool_destroyed_was_unpromoted: bool§promoted_pool_label: Option<String>

Trait Implementations§

Source§

impl Debug for DispatchOutput

Source§

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

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

impl Default for DispatchOutput

Source§

fn default() -> DispatchOutput

Returns the “default value” for a type. Read more

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, U> ConvertParam<U> for T
where T: Into<U>,

§

fn into_raw(self) -> U

§

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

§

fn wrap_result(self) -> U

§

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

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

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

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

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

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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
§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,