Interface BaseSessionService
- All Known Implementing Classes:
InMemorySessionService,VertexAiSessionService
-
Method Summary
Modifier and TypeMethodDescriptiondefault io.reactivex.rxjava3.core.Single<Event> appendEvent(Session session, Event event) Appends an event to an in-memory session object and updates the session's state based on the event's state delta, if applicable.default io.reactivex.rxjava3.core.CompletablecloseSession(Session session) Closes a session.default io.reactivex.rxjava3.core.Single<Session> createSession(String appName, String userId) Creates a new session with the specified application name and user ID, using a default state (null) and allowing the service to generate a unique session ID.io.reactivex.rxjava3.core.Single<Session> createSession(String appName, String userId, ConcurrentMap<String, Object> state, String sessionId) Creates a new session with the specified parameters.io.reactivex.rxjava3.core.CompletabledeleteSession(String appName, String userId, String sessionId) Deletes a specific session.io.reactivex.rxjava3.core.Maybe<Session> getSession(String appName, String userId, String sessionId, Optional<GetSessionConfig> config) Retrieves a specific session, optionally filtering the events included.io.reactivex.rxjava3.core.Single<ListEventsResponse> listEvents(String appName, String userId, String sessionId) Lists the events within a specific session.io.reactivex.rxjava3.core.Single<ListSessionsResponse> listSessions(String appName, String userId) Lists sessions associated with a specific application and user.
-
Method Details
-
createSession
io.reactivex.rxjava3.core.Single<Session> createSession(String appName, String userId, @Nullable ConcurrentMap<String, Object> state, @Nullable String sessionId) Creates a new session with the specified parameters.- Parameters:
appName- The name of the application associated with the session.userId- The identifier for the user associated with the session.state- An optional map representing the initial state of the session. Can be null or empty.sessionId- An optional client-provided identifier for the session. If empty or null, the service should generate a unique ID.- Returns:
- The newly created
Sessioninstance. - Throws:
SessionException- if creation fails.
-
createSession
Creates a new session with the specified application name and user ID, using a default state (null) and allowing the service to generate a unique session ID.This is a shortcut for
createSession(String, String, Map, String)with null state and a null session ID.- Parameters:
appName- The name of the application associated with the session.userId- The identifier for the user associated with the session.- Returns:
- The newly created
Sessioninstance. - Throws:
SessionException- if creation fails.
-
getSession
io.reactivex.rxjava3.core.Maybe<Session> getSession(String appName, String userId, String sessionId, Optional<GetSessionConfig> config) Retrieves a specific session, optionally filtering the events included.- Parameters:
appName- The name of the application.userId- The identifier of the user.sessionId- The unique identifier of the session to retrieve.config- Optional configuration to filter the events returned within the session (e.g., limit number of recent events, filter by timestamp). If empty, default retrieval behavior is used (potentially all events or a service-defined limit).- Returns:
- An
Optionalcontaining theSessionif found, otherwiseOptional.empty(). - Throws:
SessionException- for retrieval errors other than not found.
-
listSessions
Lists sessions associated with a specific application and user.The
Sessionobjects in the response typically contain only metadata (like ID, creation time) and not the full event list or state to optimize performance.- Parameters:
appName- The name of the application.userId- The identifier of the user whose sessions are to be listed.- Returns:
- A
ListSessionsResponsecontaining a list of matching sessions. - Throws:
SessionException- if listing fails.
-
deleteSession
io.reactivex.rxjava3.core.Completable deleteSession(String appName, String userId, String sessionId) Deletes a specific session.- Parameters:
appName- The name of the application.userId- The identifier of the user.sessionId- The unique identifier of the session to delete.- Throws:
SessionNotFoundException- if the session doesn't exist.SessionException- for other deletion errors.
-
listEvents
io.reactivex.rxjava3.core.Single<ListEventsResponse> listEvents(String appName, String userId, String sessionId) Lists the events within a specific session. Supports pagination via the response object.- Parameters:
appName- The name of the application.userId- The identifier of the user.sessionId- The unique identifier of the session whose events are to be listed.- Returns:
- A
ListEventsResponsecontaining a list of events and an optional token for retrieving the next page. - Throws:
SessionNotFoundException- if the session doesn't exist.SessionException- for other listing errors.
-
closeSession
Closes a session. This is currently a placeholder and may involve finalizing session state or performing cleanup actions in future implementations. The default implementation does nothing.- Parameters:
session- The session object to close.
-
appendEvent
@CanIgnoreReturnValue default io.reactivex.rxjava3.core.Single<Event> appendEvent(Session session, Event event) Appends an event to an in-memory session object and updates the session's state based on the event's state delta, if applicable.This method primarily modifies the passed
sessionobject in memory. Persisting these changes typically requires a separate call to an update/save method provided by the specific service implementation, or might happen implicitly depending on the implementation's design.If the event is marked as partial (e.g.,
event.isPartial() == true), it is returned directly without modifying the session state or event list. State delta keys starting withState.TEMP_PREFIXare ignored during state updates.- Parameters:
session- TheSessionobject to which the event should be appended (will be mutated).event- TheEventto append.- Returns:
- The appended
Eventinstance (or the original event if it was partial). - Throws:
NullPointerException- if session or event is null.
-