struct ChainedSessionsBackend {
ctx: YiviCtx,
sessions: HashMap<Id, ChainedSessionState>,
expiry_queue: VecDeque<(Instant, Id)>,
}Expand description
Backend to ChainedSessionsCtl.
Fields§
§ctx: YiviCtx§sessions: HashMap<Id, ChainedSessionState>§expiry_queue: VecDeque<(Instant, Id)>Session ids ordered by expiry instant. The session that will expire soonest
is in the front. May contain ids already removed from Self::sessions
(namely, sessions that completed normally before expiry).
Implementations§
Source§impl ChainedSessionsBackend
impl ChainedSessionsBackend
fn new(ctx: YiviCtx) -> Self
async fn handle_cmd(&mut self, cmd: CscCommand)
fn respond_to<T>(resp_sender: Sender<T>, resp: T, chained_session_id: Id)
async fn handle_create_session(&mut self, resp_sender: Sender<Result<Id>>)
async fn handle_wait_for_result( &mut self, chained_session_id: Id, resp_sender: Sender<Result<YiviWaitForResultResp>>, )
async fn handle_wait_for_next_session( &mut self, chained_session_id: Id, request_id: Id, disclosure: JWT, resp_sender: Sender<Result<Option<ExtendedSessionRequest>>>, )
async fn handle_abort_wait_for_next_session( &mut self, chained_session_id: Id, request_id: Id, )
async fn handle_release_next_session( &mut self, chained_session_id: Id, next_session_request: Option<ExtendedSessionRequest>, stale_after: Option<u16>, resp_sender: Sender<Result<YiviReleaseNextSessionResp>>, )
async fn sleep_until_next_expiry(&self)
fn expire_next(&mut self)
Auto Trait Implementations§
impl Freeze for ChainedSessionsBackend
impl !RefUnwindSafe for ChainedSessionsBackend
impl Send for ChainedSessionsBackend
impl Sync for ChainedSessionsBackend
impl Unpin for ChainedSessionsBackend
impl UnsafeUnpin for ChainedSessionsBackend
impl !UnwindSafe for ChainedSessionsBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more