pub struct SessionService<CH, QH>where
CH: CommandHandler<CreateSessionCommand, SessionId> + CommandHandler<CreateStreamCommand, StreamId> + CommandHandler<StartStreamCommand, ()> + CommandHandler<CompleteStreamCommand, ()> + CommandHandler<CloseSessionCommand, ()>,
QH: QueryHandler<GetSessionQuery, SessionResponse> + QueryHandler<GetSessionHealthQuery, HealthResponse> + QueryHandler<GetActiveSessionsQuery, SessionsResponse>,{ /* private fields */ }
Expand description
High-level service for session management workflows
Implementations§
Source§impl<CH, QH> SessionService<CH, QH>where
CH: CommandHandler<CreateSessionCommand, SessionId> + CommandHandler<CreateStreamCommand, StreamId> + CommandHandler<StartStreamCommand, ()> + CommandHandler<CompleteStreamCommand, ()> + CommandHandler<CloseSessionCommand, ()> + Send + Sync,
QH: QueryHandler<GetSessionQuery, SessionResponse> + QueryHandler<GetSessionHealthQuery, HealthResponse> + QueryHandler<GetActiveSessionsQuery, SessionsResponse> + Send + Sync,
impl<CH, QH> SessionService<CH, QH>where
CH: CommandHandler<CreateSessionCommand, SessionId> + CommandHandler<CreateStreamCommand, StreamId> + CommandHandler<StartStreamCommand, ()> + CommandHandler<CompleteStreamCommand, ()> + CommandHandler<CloseSessionCommand, ()> + Send + Sync,
QH: QueryHandler<GetSessionQuery, SessionResponse> + QueryHandler<GetSessionHealthQuery, HealthResponse> + QueryHandler<GetActiveSessionsQuery, SessionsResponse> + Send + Sync,
pub fn new(command_handler: Arc<CH>, query_handler: Arc<QH>) -> Self
Sourcepub async fn create_and_activate_session(
&self,
config: SessionConfig,
client_info: Option<String>,
user_agent: Option<String>,
ip_address: Option<String>,
) -> ApplicationResult<SessionId>
pub async fn create_and_activate_session( &self, config: SessionConfig, client_info: Option<String>, user_agent: Option<String>, ip_address: Option<String>, ) -> ApplicationResult<SessionId>
Create new session with automatic activation
Sourcepub async fn create_and_start_stream(
&self,
session_id: SessionId,
source_data: Value,
config: Option<StreamConfig>,
) -> ApplicationResult<StreamId>
pub async fn create_and_start_stream( &self, session_id: SessionId, source_data: Value, config: Option<StreamConfig>, ) -> ApplicationResult<StreamId>
Create stream and immediately start it
Sourcepub async fn get_session_with_health(
&self,
session_id: SessionId,
) -> ApplicationResult<SessionWithHealth>
pub async fn get_session_with_health( &self, session_id: SessionId, ) -> ApplicationResult<SessionWithHealth>
Get session with health check
Sourcepub async fn complete_stream_and_maybe_close_session(
&self,
session_id: SessionId,
stream_id: StreamId,
) -> ApplicationResult<SessionCompletionResult>
pub async fn complete_stream_and_maybe_close_session( &self, session_id: SessionId, stream_id: StreamId, ) -> ApplicationResult<SessionCompletionResult>
Complete stream and close session if no more active streams
Sourcepub async fn get_sessions_overview(
&self,
limit: Option<usize>,
) -> ApplicationResult<SessionsOverview>
pub async fn get_sessions_overview( &self, limit: Option<usize>, ) -> ApplicationResult<SessionsOverview>
Get overview of all active sessions
Sourcepub async fn graceful_shutdown_session(
&self,
session_id: SessionId,
) -> ApplicationResult<SessionShutdownResult>
pub async fn graceful_shutdown_session( &self, session_id: SessionId, ) -> ApplicationResult<SessionShutdownResult>
Gracefully shutdown session with all streams
Trait Implementations§
Source§impl<CH, QH> Debug for SessionService<CH, QH>where
CH: CommandHandler<CreateSessionCommand, SessionId> + CommandHandler<CreateStreamCommand, StreamId> + CommandHandler<StartStreamCommand, ()> + CommandHandler<CompleteStreamCommand, ()> + CommandHandler<CloseSessionCommand, ()> + Debug,
QH: QueryHandler<GetSessionQuery, SessionResponse> + QueryHandler<GetSessionHealthQuery, HealthResponse> + QueryHandler<GetActiveSessionsQuery, SessionsResponse> + Debug,
impl<CH, QH> Debug for SessionService<CH, QH>where
CH: CommandHandler<CreateSessionCommand, SessionId> + CommandHandler<CreateStreamCommand, StreamId> + CommandHandler<StartStreamCommand, ()> + CommandHandler<CompleteStreamCommand, ()> + CommandHandler<CloseSessionCommand, ()> + Debug,
QH: QueryHandler<GetSessionQuery, SessionResponse> + QueryHandler<GetSessionHealthQuery, HealthResponse> + QueryHandler<GetActiveSessionsQuery, SessionsResponse> + Debug,
Auto Trait Implementations§
impl<CH, QH> Freeze for SessionService<CH, QH>
impl<CH, QH> RefUnwindSafe for SessionService<CH, QH>where
CH: RefUnwindSafe,
QH: RefUnwindSafe,
impl<CH, QH> Send for SessionService<CH, QH>
impl<CH, QH> Sync for SessionService<CH, QH>
impl<CH, QH> Unpin for SessionService<CH, QH>
impl<CH, QH> UnwindSafe for SessionService<CH, QH>where
CH: RefUnwindSafe,
QH: RefUnwindSafe,
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