pub struct PendingMessage { /* private fields */ }Expand description
A message whose reserved mesh slots must be filled before it can be sent.
Contains a PythonMessageKind and a PicklingState. The PicklingState may
hold mesh slots reserved for pending meshes, filled sender-side once their
handles resolve, before the message can be converted into a PythonMessage.
Implementations§
Source§impl PendingMessage
impl PendingMessage
Sourcepub fn new(kind: PythonMessageKind, state: PicklingState) -> Self
pub fn new(kind: PythonMessageKind, state: PicklingState) -> Self
Create a new PendingMessage from a kind and pickling state.
Sourcepub fn take(&mut self) -> PyResult<PendingMessage>
pub fn take(&mut self) -> PyResult<PendingMessage>
Take ownership of the inner state from a mutable reference.
This is used by pyo3 pymethods that receive &mut PendingMessage
but need to pass ownership to the trait method.
Sourcepub fn try_resolve_now(self) -> PyResult<Result<PythonMessage, PendingMessage>>
pub fn try_resolve_now(self) -> PyResult<Result<PythonMessage, PendingMessage>>
Convert this message synchronously when no mesh fills are pending.
A pending message is returned unchanged in the inner Err so the
caller can use the existing asynchronous resolution path.
Every reserved None mesh slot is created together with one pending
fill entry, while resolved and reconstructed slots are always Some.
Therefore a fresh zero-fill message cannot fail assembly due to an
unfilled slot.
Sourcepub async fn resolve(self) -> PyResult<PythonMessage>
pub async fn resolve(self) -> PyResult<PythonMessage>
Resolve any reserved mesh slots and convert this into a PythonMessage.
This is an async method that:
- Fills the reserved mesh slots from their pending handles
- Builds a PythonMessage with the resolved bytes and
refstable
Source§impl PendingMessage
impl PendingMessage
Sourcepub fn py_new(
kind: PythonMessageKind,
state: PyRefMut<'_, PicklingState>,
) -> PyResult<Self>
pub fn py_new( kind: PythonMessageKind, state: PyRefMut<'_, PicklingState>, ) -> PyResult<Self>
Create a new PendingMessage from a kind and pickling state.
Trait Implementations§
impl DerefToPyAny for PendingMessage
impl ExtractPyClassWithClone for PendingMessage
Source§impl<'py> IntoPyObject<'py> for PendingMessage
impl<'py> IntoPyObject<'py> for PendingMessage
Source§type Target = PendingMessage
type Target = PendingMessage
Source§type Output = Bound<'py, <PendingMessage as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <PendingMessage 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 PendingMessage
impl PyClass for PendingMessage
Source§impl PyClassImpl for PendingMessage
impl PyClassImpl for PendingMessage
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 = /// A message whose reserved mesh slots must be filled before it can be sent.
///
/// Contains a `PythonMessageKind` and a `PicklingState`. The `PicklingState` may
/// hold mesh slots reserved for pending meshes, filled sender-side once their
/// handles resolve, before the message can be converted into a `PythonMessage`.
const RAW_DOC: &'static CStr = /// A message whose reserved mesh slots must be filled before it can be sent. /// /// Contains a `PythonMessageKind` and a `PicklingState`. The `PicklingState` may /// hold mesh slots reserved for pending meshes, filled sender-side once their /// handles resolve, before the message can be converted into a `PythonMessage`.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<PendingMessage>
type ThreadChecker = SendablePyClass<PendingMessage>
type Inventory = Pyo3MethodsInventoryForPendingMessage
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 PendingMessage
impl PyClassNewTextSignature for PendingMessage
const TEXT_SIGNATURE: &'static str = "(kind, state)"
Source§impl PyTypeInfo for PendingMessage
impl PyTypeInfo for PendingMessage
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.Auto Trait Implementations§
impl !Freeze for PendingMessage
impl !RefUnwindSafe for PendingMessage
impl !UnwindSafe for PendingMessage
impl Send for PendingMessage
impl Sync for PendingMessage
impl Unpin for PendingMessage
impl UnsafeUnpin for PendingMessage
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§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 moreSource§impl<T> IntoPyObjectBox for Twhere
T: for<'py> IntoPyObject<'py> + Send,
impl<T> IntoPyObjectBox for Twhere
T: for<'py> IntoPyObject<'py> + Send,
fn into_py_object(self: Box<T>, py: Python<'_>) -> Result<Py<PyAny>, PyErr>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].impl<M> Message for M
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§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
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.
§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