DMSCResourcePool

Struct DMSCResourcePool 

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

Resource pool for managing multiple similar devices

This struct manages a pool of devices of the same type, tracking their availability, allocation status, and capacity. It provides methods for adding/removing devices, allocating/releasing devices, and collecting statistics.

Implementations§

Source§

impl DMSCResourcePool

Source

pub fn new(config: DMSCResourcePoolConfig) -> Self

Creates a new resource pool with the given configuration

§Parameters
  • config: The configuration for the resource pool
§Returns

A new DMSCResourcePool instance with the specified configuration

Source

pub fn add_device(&mut self, device: Arc<DMSCDevice>) -> bool

Adds a device to the pool

This method adds a device to the pool if it matches the pool’s device type and is not already in the pool.

§Parameters
  • device: The device to add to the pool
§Returns

true if the device was successfully added, false otherwise

Source

pub fn remove_device(&mut self, device_id: &str) -> bool

Removes a device from the pool

This method removes a device from the pool by its ID, updating capacity counters based on the device’s status.

§Parameters
  • device_id: The ID of the device to remove
§Returns

true if the device was successfully removed, false otherwise

Source

pub fn allocate(&mut self, _allocation_id: &str) -> Option<Arc<DMSCDevice>>

Allocates a device from the pool

This method allocates the first available device from the pool, updating capacity counters.

§Parameters
  • _allocation_id: The ID of the allocation (currently unused)
§Returns

An Option<Arc<DMSCDevice>> containing the allocated device if successful, None otherwise

Source

pub fn release(&mut self, allocation_id: &str) -> bool

Releases a device back to the pool

This method releases a device back to the pool by its allocation ID, updating capacity counters.

§Parameters
  • allocation_id: The ID of the allocation to release
§Returns

true if the device was successfully released, false otherwise

Source

pub fn get_status(&self) -> DMSCResourcePoolStatus

Gets the current status of the pool

This method returns a DMSCResourcePoolStatus struct containing information about the pool’s capacity, allocation, and utilization.

§Returns

A DMSCResourcePoolStatus struct with the current pool status

Source

pub fn name(&self) -> &str

Gets the name of the pool

§Returns

The pool name as a string slice

Source

pub fn device_type(&self) -> DMSCDeviceType

Gets the device type of the pool

§Returns

The device type as a DMSCDeviceType enum

Source

pub fn get_devices(&self) -> Vec<Arc<DMSCDevice>>

Gets all devices in the pool

§Returns

A vector of Arc<DMSCDevice> containing all devices in the pool

Source

pub fn get_available_devices(&self) -> Vec<Arc<DMSCDevice>>

Gets available devices in the pool

§Returns

A vector of Arc<DMSCDevice> containing only available devices

Source

pub fn get_allocated_devices(&self) -> Vec<Arc<DMSCDevice>>

Gets allocated devices in the pool

§Returns

A vector of Arc<DMSCDevice> containing only allocated devices

Source

pub fn has_available_capacity(&self) -> bool

Checks if the pool has available capacity

§Returns

true if the pool has available devices, false otherwise

Source

pub fn utilization_rate(&self) -> f64

Gets the utilization rate of the pool (0.0 - 1.0)

§Returns

The utilization rate as a floating-point number between 0.0 and 1.0

Source

pub fn is_healthy(&self) -> bool

Checks if the pool is healthy

A pool is considered healthy if it has available devices or allocated devices.

§Returns

true if the pool is healthy, false otherwise

Source

pub fn get_statistics(&self) -> DMSCResourcePoolStatistics

Gets comprehensive statistics for the pool

This method calculates and returns comprehensive statistics for the pool, including device counts, utilization, total compute units, memory, storage, bandwidth, and average health score.

§Returns

A DMSCResourcePoolStatistics struct with comprehensive pool statistics

Trait Implementations§

Source§

impl<'py> IntoPyObject<'py> for DMSCResourcePool

Source§

type Target = DMSCResourcePool

The Python output type
Source§

type Output = Bound<'py, <DMSCResourcePool 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 DMSCResourcePool

Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for DMSCResourcePool

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 = /// allocating/releasing devices, and collecting statistics.

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

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 PyTypeInfo for DMSCResourcePool

Source§

const NAME: &'static str = "DMSCResourcePool"

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 DMSCResourcePool

Source§

impl ExtractPyClassWithClone for DMSCResourcePool

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,