pub struct DMSCCacheModule { /* private fields */ }Expand description
Main cache module for DMSC.
This module provides a unified caching abstraction with support for multiple backend implementations.
It implements both the AsyncServiceModule and ServiceModule traits for seamless integration
into the DMSC application lifecycle.
Implementations§
Source§impl DMSCCacheModule
impl DMSCCacheModule
Sourcepub async fn new(config: DMSCCacheConfig) -> Self
pub async fn new(config: DMSCCacheConfig) -> Self
Creates a new cache module with the given configuration.
This method initializes the cache manager with the appropriate backend based on the provided configuration. The backend is created immediately, not as a placeholder.
§Parameters
config: The cache configuration to use
§Returns
A new DMSCCacheModule instance
Sourcepub fn with_config(config: DMSCCacheConfig) -> Self
pub fn with_config(config: DMSCCacheConfig) -> Self
Creates a new cache module with the given configuration (synchronous version).
This is a synchronous wrapper around the async new method for use in the builder pattern.
For Redis and Hybrid backends, it will block on the current thread to create the backend.
§Parameters
config: The cache configuration to use
§Returns
A new DMSCCacheModule instance
Sourcepub fn cache_manager(&self) -> Arc<RwLock<DMSCCacheManager>>
pub fn cache_manager(&self) -> Arc<RwLock<DMSCCacheManager>>
Returns a reference to the cache manager.
The cache manager is wrapped in an Arc<RwLock<>> to allow thread-safe access from multiple async tasks.
§Returns
An Arc<RwLock
Trait Implementations§
Source§impl DMSCModule for DMSCCacheModule
impl DMSCModule for DMSCCacheModule
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Indicates whether the cache module is critical.
The cache module is non-critical, meaning that if it fails to initialize or operate, it should not break the entire application. This allows the core functionality to continue even if caching features are unavailable.
§Returns
false since cache is non-critical
Source§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Initializes the cache module asynchronously.
This method performs the following steps:
- Loads configuration from the service context
- Updates the module configuration if provided
- Initializes the appropriate cache backend based on configuration
- Creates and sets the cache manager with the initialized backend
§Parameters
ctx: The service context containing configuration and other services
§Returns
A DMSCResult<()> indicating success or failure
Source§fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Performs asynchronous cleanup after the application has shut down.
This method performs the following steps:
- Prints cache statistics
- Cleans up expired cache entries
- Prints cleanup results
§Parameters
_ctx: The service context (not used in this implementation)
§Returns
A DMSCResult<()> indicating success or failure
Source§fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<'py> IntoPyObject<'py> for DMSCCacheModule
impl<'py> IntoPyObject<'py> for DMSCCacheModule
Source§type Target = DMSCCacheModule
type Target = DMSCCacheModule
Source§type Output = Bound<'py, <DMSCCacheModule as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DMSCCacheModule as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for DMSCCacheModule
impl PyClass for DMSCCacheModule
Source§impl PyClassImpl for DMSCCacheModule
impl PyClassImpl for DMSCCacheModule
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// into the DMSC application lifecycle.
const RAW_DOC: &'static CStr = /// into the DMSC application lifecycle.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<DMSCCacheModule>
type ThreadChecker = SendablePyClass<DMSCCacheModule>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature for DMSCCacheModule
impl PyClassNewTextSignature for DMSCCacheModule
const TEXT_SIGNATURE: &'static str = "(config)"
Source§impl PyMethods<DMSCCacheModule> for PyClassImplCollector<DMSCCacheModule>
impl PyMethods<DMSCCacheModule> for PyClassImplCollector<DMSCCacheModule>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for DMSCCacheModule
impl PyTypeInfo for DMSCCacheModule
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Source§impl ServiceModule for DMSCCacheModule
impl ServiceModule for DMSCCacheModule
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Source§fn init(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn init(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn before_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn before_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn after_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn after_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn before_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn before_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn after_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn after_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
impl DerefToPyAny for DMSCCacheModule
impl ExtractPyClassWithClone for DMSCCacheModule
Auto Trait Implementations§
impl Freeze for DMSCCacheModule
impl !RefUnwindSafe for DMSCCacheModule
impl Send for DMSCCacheModule
impl Sync for DMSCCacheModule
impl Unpin for DMSCCacheModule
impl !UnwindSafe for DMSCCacheModule
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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 Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
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>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more