pub struct DMSCDeviceController { /* private fields */ }Expand description
Device controller - manages device lifecycle and state
Implementations§
Source§impl DMSCDeviceController
impl DMSCDeviceController
pub fn new() -> Self
Sourcepub async fn with_discovery(discovery: Arc<DMSCDeviceDiscovery>) -> Self
pub async fn with_discovery(discovery: Arc<DMSCDeviceDiscovery>) -> Self
Creates a new controller with the discovery engine
Sourcepub async fn init_discovery(&mut self) -> DMSCResult<()>
pub async fn init_discovery(&mut self) -> DMSCResult<()>
Initializes the discovery engine
Sourcepub async fn discover_devices(&mut self) -> DMSCResult<DMSCDiscoveryResult>
pub async fn discover_devices(&mut self) -> DMSCResult<DMSCDiscoveryResult>
Discover devices in the system
Sourcepub async fn discover_system_devices(
&mut self,
config: &DMSCDeviceControlConfig,
) -> DMSCResult<()>
pub async fn discover_system_devices( &mut self, config: &DMSCDeviceControlConfig, ) -> DMSCResult<()>
Discover real system devices based on configuration
Sourcepub async fn find_suitable_device(
&self,
device_type: &DMSCDeviceType,
requirements: &DMSCDeviceCapabilities,
) -> DMSCResult<Option<DMSCDevice>>
pub async fn find_suitable_device( &self, device_type: &DMSCDeviceType, requirements: &DMSCDeviceCapabilities, ) -> DMSCResult<Option<DMSCDevice>>
Find a suitable device for the given requirements
Sourcepub fn initialize_metrics(
&mut self,
metrics_registry: &DMSCMetricsRegistry,
) -> DMSCResult<()>
pub fn initialize_metrics( &mut self, metrics_registry: &DMSCMetricsRegistry, ) -> DMSCResult<()>
Initialize metrics for device monitoring
Sourcepub async fn allocate_device(
&mut self,
device_id: &str,
allocation_id: &str,
) -> DMSCResult<()>
pub async fn allocate_device( &mut self, device_id: &str, allocation_id: &str, ) -> DMSCResult<()>
Allocate a device
Sourcepub async fn release_device_by_allocation(
&mut self,
allocation_id: &str,
) -> DMSCResult<()>
pub async fn release_device_by_allocation( &mut self, allocation_id: &str, ) -> DMSCResult<()>
Release a device by allocation ID
Sourcepub fn get_all_devices(&self) -> Vec<DMSCDevice>
pub fn get_all_devices(&self) -> Vec<DMSCDevice>
Get all devices
Sourcepub fn release_all_devices(&mut self) -> DMSCResult<()>
pub fn release_all_devices(&mut self) -> DMSCResult<()>
Release all devices (shutdown)
Sourcepub async fn perform_health_checks(&mut self) -> DMSCResult<Vec<(String, u8)>>
pub async fn perform_health_checks(&mut self) -> DMSCResult<Vec<(String, u8)>>
Perform health check on all devices
Sourcepub async fn start_health_checks(&self, interval_secs: u64) -> JoinHandle<()>
pub async fn start_health_checks(&self, interval_secs: u64) -> JoinHandle<()>
Start periodic health checks
Sourcepub async fn get_device_health(
&self,
device_id: &str,
) -> DMSCResult<DMSCDeviceHealthMetrics>
pub async fn get_device_health( &self, device_id: &str, ) -> DMSCResult<DMSCDeviceHealthMetrics>
Get device health metrics
Sourcepub async fn get_all_device_health(
&self,
) -> DMSCResult<HashMap<String, DMSCDeviceHealthMetrics>>
pub async fn get_all_device_health( &self, ) -> DMSCResult<HashMap<String, DMSCDeviceHealthMetrics>>
Get all device health metrics
Trait Implementations§
Source§impl Default for DMSCDeviceController
impl Default for DMSCDeviceController
Source§impl<'py> IntoPyObject<'py> for DMSCDeviceController
impl<'py> IntoPyObject<'py> for DMSCDeviceController
Source§type Target = DMSCDeviceController
type Target = DMSCDeviceController
The Python output type
Source§type Output = Bound<'py, <DMSCDeviceController as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DMSCDeviceController as IntoPyObject<'py>>::Target>
The smart pointer type to use. Read more
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>
Performs the conversion.
Source§impl PyClass for DMSCDeviceController
impl PyClass for DMSCDeviceController
Source§impl PyClassImpl for DMSCDeviceController
impl PyClassImpl for DMSCDeviceController
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
#[pyclass(subclass)]
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
#[pyclass(extends=…)]
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
#[pyclass(mapping)]
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
#[pyclass(sequence)]
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
#[pyclass(immutable_type)]
Source§const RAW_DOC: &'static CStr = /// Device controller - manages device lifecycle and state
const RAW_DOC: &'static CStr = /// Device controller - manages device lifecycle and state
Docstring for the class provided on the struct or enum. Read more
Source§const DOC: &'static CStr
const DOC: &'static CStr
Fully rendered class doc, including the
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<DMSCDeviceController>
type ThreadChecker = SendablePyClass<DMSCDeviceController>
This handles following two situations: Read more
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Immutable or mutable
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
The closest native ancestor. This is
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 DMSCDeviceController
impl PyClassNewTextSignature for DMSCDeviceController
const TEXT_SIGNATURE: &'static str = "()"
Source§impl PyMethods<DMSCDeviceController> for PyClassImplCollector<DMSCDeviceController>
impl PyMethods<DMSCDeviceController> for PyClassImplCollector<DMSCDeviceController>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for DMSCDeviceController
impl PyTypeInfo for DMSCDeviceController
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Returns the PyTypeObject instance for this type.
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
Returns the safe abstraction over the type object.
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
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
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
Checks if
object is an instance of this type.impl DerefToPyAny for DMSCDeviceController
impl ExtractPyClassWithClone for DMSCDeviceController
Auto Trait Implementations§
impl Freeze for DMSCDeviceController
impl !RefUnwindSafe for DMSCDeviceController
impl Send for DMSCDeviceController
impl Sync for DMSCDeviceController
impl Unpin for DMSCDeviceController
impl !UnwindSafe for DMSCDeviceController
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
Mutably borrows from an owned value. Read more
§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>
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§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>
Converts
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>
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>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
Converts
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>
Wrap the input message
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>
Wrap the input message
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
👎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
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
Returns the expected type as a possible argument for the
isinstance and issubclass function. Read more