DMSCSessionManager

Struct DMSCSessionManager 

Source
pub struct DMSCSessionManager { /* private fields */ }
Expand description

Session manager for handling user sessions.

This struct manages session creation, validation, and cleanup. It limits the number of sessions per user and automatically cleans up expired sessions.

Implementations§

Source§

impl DMSCSessionManager

Source

pub fn new(timeout_secs: u64) -> Self

Creates a new session manager with the specified timeout.

§Parameters
  • timeout_secs: Default session timeout in seconds
§Returns

A new instance of DMSCSessionManager

§Notes

Default maximum sessions per user is 5

Source

pub async fn create_session( &self, user_id: String, ip_address: Option<String>, user_agent: Option<String>, ) -> DMSCResult<String>

Creates a new session for a user.

§Parameters
  • user_id: ID of the user to create the session for
  • ip_address: Optional client IP address
  • user_agent: Optional client user agent
§Returns

The ID of the newly created session

§Notes
  • If the user has reached the maximum number of sessions, the oldest session is removed
Source

pub async fn get_session( &self, session_id: &str, ) -> DMSCResult<Option<DMSCSession>>

Gets a session by ID.

§Parameters
  • session_id: ID of the session to retrieve
§Returns

Some(DMSCSession) if the session exists and is not expired, otherwise None

§Notes
  • Expired sessions are automatically removed and return None
  • The session’s last accessed time is updated when retrieved
Source

pub async fn update_session( &self, session_id: &str, data: HashMap<String, String>, ) -> DMSCResult<bool>

Updates a session’s data.

§Parameters
  • session_id: ID of the session to update
  • data: HashMap of key-value pairs to update in the session
§Returns

true if the session was updated successfully, false if the session doesn’t exist or is expired

§Notes
  • The session’s last accessed time is updated when modified
Source

pub async fn extend_session(&self, session_id: &str) -> DMSCResult<bool>

Extends a session’s expiration time.

§Parameters
  • session_id: ID of the session to extend
§Returns

true if the session was extended successfully, false if the session doesn’t exist or is expired

Source

pub async fn destroy_session(&self, session_id: &str) -> DMSCResult<bool>

Destroys a session by ID.

§Parameters
  • session_id: ID of the session to destroy
§Returns

true if the session was destroyed successfully, false if the session doesn’t exist

Source

pub async fn destroy_user_sessions(&self, user_id: &str) -> DMSCResult<usize>

Destroys all sessions for a user.

§Parameters
  • user_id: ID of the user whose sessions to destroy
§Returns

The number of sessions destroyed

Source

pub async fn get_user_sessions( &self, user_id: &str, ) -> DMSCResult<Vec<DMSCSession>>

Gets all active sessions for a user.

§Parameters
  • user_id: ID of the user whose sessions to retrieve
§Returns

A vector of active sessions for the user

Source

pub async fn cleanup_expired(&self) -> DMSCResult<usize>

Cleans up all expired sessions.

§Returns

The number of expired sessions cleaned up

Source

pub async fn cleanup_all(&self) -> DMSCResult<()>

Cleans up all sessions.

This method removes all sessions, regardless of their expiration status.

Source

pub fn get_timeout(&self) -> u64

Gets the default session timeout.

§Returns

The default session timeout in seconds

Source

pub fn set_timeout(&mut self, timeout_secs: u64)

Sets the default session timeout.

§Parameters
  • timeout_secs: New default session timeout in seconds

Trait Implementations§

Source§

impl<'py> IntoPyObject<'py> for DMSCSessionManager

Source§

type Target = DMSCSessionManager

The Python output type
Source§

type Output = Bound<'py, <DMSCSessionManager as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

The type returned in the event of a conversion error.
Source§

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl PyClass for DMSCSessionManager

Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for DMSCSessionManager

Source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

const IS_IMMUTABLE_TYPE: bool = false

#[pyclass(immutable_type)]
Source§

const RAW_DOC: &'static CStr = c"Session manager for handling user sessions.\n\nThis struct manages session creation, validation, and cleanup. It limits\nthe number of sessions per user and automatically cleans up expired sessions.\x00"

Docstring for the class provided on the struct or enum. Read more
Source§

const DOC: &'static CStr

Fully rendered class doc, including the text_signature if a constructor is defined. Read more
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = SendablePyClass<DMSCSessionManager>

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

§

fn dict_offset() -> Option<isize>

§

fn weaklist_offset() -> Option<isize>

Source§

impl PyClassNewTextSignature for DMSCSessionManager

Source§

const TEXT_SIGNATURE: &'static str = "(timeout_secs)"

Source§

impl PyMethods<DMSCSessionManager> for PyClassImplCollector<DMSCSessionManager>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for DMSCSessionManager

Source§

const NAME: &'static str = "DMSCSessionManager"

Class name.
Source§

const MODULE: Option<&'static str> = ::core::option::Option::None

Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
Source§

impl DerefToPyAny for DMSCSessionManager

Source§

impl ExtractPyClassWithClone for DMSCSessionManager

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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

impl<T> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

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
§

impl<T> PyErrArguments for T
where T: for<'py> IntoPyObject<'py> + Send + Sync,

§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

§

const NAME: &'static str = T::NAME

👎Deprecated since 0.27.0: Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
Name of self. This is used in error messages, for example.
§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
§

fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>

Returns the expected type as a possible argument for the isinstance and issubclass function. 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<T> Ungil for T
where T: Send,