[R3/R4 Path A] mxaccess: port Lmx.dll FUN_10100ce0 synthesizer kernel
Path A landed for R3/R4. The byte->MxStatus synthesizer in Lmx.dll is
FUN_10100ce0 (`analysis/ghidra/exports/Lmx.dll.synthesizer-helpers2-decompile.md`),
a 4-byte u32 LE -> 4-tuple MxStatus decoder used by every NMX-frame
parser in Lmx.dll. The kernel is byte-deterministic and context-free,
so it ports as a pure function -- the operation-tracking state
machine the original verdict deferred is NOT required for synthesis.
Bit layout (per FUN_10100ce0 lines 21-24):
bit 31: success (-1 if set, 0 if clear)
bits 27..24: category (4 bits)
bits 23..20: detected_by (4 bits)
bits 15..0: detail (i16 -- low 16 bits, signed)
bits 30..28, 19..16: reserved/padding
Codec changes:
- MxStatus::from_packed_u32() / ::to_packed_u32() -- the kernel +
inverse for round-trip parity.
- MxStatus::from_nmx_response_code() -- the constructed-from-response-
code switch in FUN_1010bd10:741-770 (six proven mappings: 0x01, 0x02
-> CommunicationError + RequestingNmx; 0x03 -> ConfigurationError +
RequestingNmx; 0x04 -> ConfigurationError + RespondingNmx; 0x05 ->
CommunicationError + RespondingNmx; 0x1A -> CommunicationError +
RequestingNmx).
- MxStatusCategory / MxStatusSource: from_i16/to_i16 promoted to const
fn so MxStatus::from_packed_u32 can be const.
- NmxOperationStatusMessage::try_parse_process_data_received_body() --
thin wrapper that peels the outer NmxObservedEnvelope before
delegating to try_parse_inner. Mirrors
NmxOperationStatusMessage.TryParseProcessDataReceivedBody (.NET cs:20-32).
- NmxOperationStatusMessage::promote_to_typed() -- entry point that
returns the existing Status field. Documented as a no-op pass-through
for now (the 5-byte inner-body wire shape is NOT the same field as
the 4-byte packed-u32 the kernel decodes); kept for API symmetry.
- 22 new round-trip tests covering the kernel, the response-code
switch, the proven 0x00/0x41/0xEF completion bytes, and round-trip
for every canonical sentinel.
mxaccess (Session) changes:
- New OperationKind enum (Write/WriteSecured/Read/Subscribe/
Unsubscribe/Activate/Suspend/Other).
- New OperationContext struct (correlation_id, op_kind, reference,
retry_count) -- ground for the F54 follow-on per-operation
correlation work.
- New OperationStatus event type {raw, status, context,
is_during_recovery}, mirroring MxNativeOperationStatusEvent (cs:73-78)
with the typed-MxStatus addition.
- Session::operation_status_events() -> broadcast::Receiver<Arc<
OperationStatus>> + operation_status_stream() Stream variant.
- callback_router() now tries operation-status parsing first, falling
through to subscription messages -- matches MxNativeSession
.OnCallbackReceived dispatch order (cs:574,582,590).
- recover_connection() flips a recovery_active counter (Arc<AtomicU32>
shared with the router) so OperationStatus.is_during_recovery is
populated correctly. Mirrors MxNativeSession._recoveryActive
Volatile.Read at cs:573.
- 3 new router tests covering: status-word frame dispatch + typed
promotion to WriteCompleteOk; completion-only frames stay verbatim;
is_during_recovery is stamped from the live counter.
Per-operation context tracking (correlating completion frames back to
outstanding writes/subscribes via the correlation_id) is filed as F54
in design/followups.md. The synthesizer kernel itself is byte-
deterministic, so the kernel and the correlation work are decoupled.
Ghidra evidence (the next-ring xref walk beyond FUN_10114a90):
- analysis/ghidra/exports/Lmx.dll.set-attribute-result-xrefs.md --
xrefs to OnSetAttributeResult / CancelWithStatus / OperationComplete.
- analysis/ghidra/exports/Lmx.dll.vtable-data-xrefs.md -- vtable-slot
data xrefs for the virtual-dispatch path.
- analysis/ghidra/exports/Lmx.dll.synthesizer-decompile.md --
ScanOnDemandCallback::OperationComplete/MultipleOperationComplete
(FUN_1010b990), RemotePlatformResolver::OperationComplete
(FUN_1010dc80), and the constructed-from-responseCode synthesizer
in FUN_1010bd10 (lines 698-770). FUN_1010bd10 is the wire-frame
receiver that drives the synthesis.
- analysis/ghidra/exports/Lmx.dll.synthesizer-helpers-decompile.md --
FUN_10003fc0 (the <success %d category %d ...> formatter; confirms
the 4-tuple layout), FUN_1008f150 (dispatch helper).
- analysis/ghidra/exports/Lmx.dll.synthesizer-helpers2-decompile.md --
FUN_10100ce0 (the kernel itself), FUN_10100bc0 (3xu16 reader),
FUN_1005e580 (4-byte stream reader), FUN_1010ee00 (sister NMX-frame
parser using the same kernel).
- analysis/ghidra/exports/Lmx.dll.synthesizer-callers-xrefs.md --
caller graph; confirms the kernel is called from many wire-frame
parsers but each parser shares the single 4-byte decoder.
R3/R4 verdict updated in design/70-risks-and-open-questions.md from
"settled at verbatim-preserve" to "settled per Path A". F54 filed in
design/followups.md for the per-operation correlation work.
cargo build / test / clippy -D warnings / RUSTDOCFLAGS=-D warnings doc
all clean. cargo public-api baselines regenerated for mxaccess and
mxaccess-codec.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -514,7 +514,9 @@ pub mxaccess_codec::operation_status::NmxOperationStatusMessage::status: mxacces
|
||||
pub mxaccess_codec::operation_status::NmxOperationStatusMessage::status_code: u16
|
||||
impl mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::is_mx_access_write_complete(&self) -> bool
|
||||
pub const fn mxaccess_codec::operation_status::NmxOperationStatusMessage::promote_to_typed(&self) -> mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_inner(inner: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_process_data_received_body(body: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
impl core::clone::Clone for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::clone(&self) -> mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
impl core::cmp::Eq for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
@@ -618,8 +620,8 @@ pub mxaccess_codec::prelude::MxStatusCategory::SoftwareError = 7
|
||||
pub mxaccess_codec::prelude::MxStatusCategory::Unknown = -1
|
||||
pub mxaccess_codec::prelude::MxStatusCategory::Warning = 2
|
||||
impl mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::clone(&self) -> mxaccess_codec::status::MxStatusCategory
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusCategory
|
||||
@@ -649,8 +651,8 @@ pub mxaccess_codec::prelude::MxStatusSource::RespondingLmx = 1
|
||||
pub mxaccess_codec::prelude::MxStatusSource::RespondingNmx = 3
|
||||
pub mxaccess_codec::prelude::MxStatusSource::Unknown = -1
|
||||
impl mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::clone(&self) -> mxaccess_codec::status::MxStatusSource
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusSource
|
||||
@@ -838,7 +840,10 @@ pub const mxaccess_codec::status::MxStatus::INVALID_REFERENCE_CONFIGURATION: Sel
|
||||
pub const mxaccess_codec::status::MxStatus::SUSPEND_PENDING: Self
|
||||
pub const mxaccess_codec::status::MxStatus::WRITE_COMPLETE_OK: Self
|
||||
pub fn mxaccess_codec::status::MxStatus::detail_text(&self) -> core::option::Option<&'static str>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_nmx_response_code(response_code: u8) -> core::option::Option<Self>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_packed_u32(packed: u32) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatus::is_ok(&self) -> bool
|
||||
pub const fn mxaccess_codec::status::MxStatus::to_packed_u32(self) -> u32
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::status::MxStatus::clone(&self) -> mxaccess_codec::status::MxStatus
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatus
|
||||
@@ -903,7 +908,9 @@ pub mxaccess_codec::prelude::NmxOperationStatusMessage::status: mxaccess_codec::
|
||||
pub mxaccess_codec::prelude::NmxOperationStatusMessage::status_code: u16
|
||||
impl mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::is_mx_access_write_complete(&self) -> bool
|
||||
pub const fn mxaccess_codec::operation_status::NmxOperationStatusMessage::promote_to_typed(&self) -> mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_inner(inner: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_process_data_received_body(body: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
impl core::clone::Clone for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::clone(&self) -> mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
impl core::cmp::Eq for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
@@ -1220,8 +1227,8 @@ pub mxaccess_codec::status::MxStatusCategory::SoftwareError = 7
|
||||
pub mxaccess_codec::status::MxStatusCategory::Unknown = -1
|
||||
pub mxaccess_codec::status::MxStatusCategory::Warning = 2
|
||||
impl mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::clone(&self) -> mxaccess_codec::status::MxStatusCategory
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusCategory
|
||||
@@ -1251,8 +1258,8 @@ pub mxaccess_codec::status::MxStatusSource::RespondingLmx = 1
|
||||
pub mxaccess_codec::status::MxStatusSource::RespondingNmx = 3
|
||||
pub mxaccess_codec::status::MxStatusSource::Unknown = -1
|
||||
impl mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::clone(&self) -> mxaccess_codec::status::MxStatusSource
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusSource
|
||||
@@ -1285,7 +1292,10 @@ pub const mxaccess_codec::status::MxStatus::INVALID_REFERENCE_CONFIGURATION: Sel
|
||||
pub const mxaccess_codec::status::MxStatus::SUSPEND_PENDING: Self
|
||||
pub const mxaccess_codec::status::MxStatus::WRITE_COMPLETE_OK: Self
|
||||
pub fn mxaccess_codec::status::MxStatus::detail_text(&self) -> core::option::Option<&'static str>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_nmx_response_code(response_code: u8) -> core::option::Option<Self>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_packed_u32(packed: u32) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatus::is_ok(&self) -> bool
|
||||
pub const fn mxaccess_codec::status::MxStatus::to_packed_u32(self) -> u32
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::status::MxStatus::clone(&self) -> mxaccess_codec::status::MxStatus
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatus
|
||||
@@ -1774,8 +1784,8 @@ pub mxaccess_codec::MxStatusCategory::SoftwareError = 7
|
||||
pub mxaccess_codec::MxStatusCategory::Unknown = -1
|
||||
pub mxaccess_codec::MxStatusCategory::Warning = 2
|
||||
impl mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusCategory::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusCategory
|
||||
pub fn mxaccess_codec::status::MxStatusCategory::clone(&self) -> mxaccess_codec::status::MxStatusCategory
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusCategory
|
||||
@@ -1805,8 +1815,8 @@ pub mxaccess_codec::MxStatusSource::RespondingLmx = 1
|
||||
pub mxaccess_codec::MxStatusSource::RespondingNmx = 3
|
||||
pub mxaccess_codec::MxStatusSource::Unknown = -1
|
||||
impl mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::from_i16(value: i16) -> Self
|
||||
pub const fn mxaccess_codec::status::MxStatusSource::to_i16(self) -> i16
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatusSource
|
||||
pub fn mxaccess_codec::status::MxStatusSource::clone(&self) -> mxaccess_codec::status::MxStatusSource
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatusSource
|
||||
@@ -2100,7 +2110,10 @@ pub const mxaccess_codec::status::MxStatus::INVALID_REFERENCE_CONFIGURATION: Sel
|
||||
pub const mxaccess_codec::status::MxStatus::SUSPEND_PENDING: Self
|
||||
pub const mxaccess_codec::status::MxStatus::WRITE_COMPLETE_OK: Self
|
||||
pub fn mxaccess_codec::status::MxStatus::detail_text(&self) -> core::option::Option<&'static str>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_nmx_response_code(response_code: u8) -> core::option::Option<Self>
|
||||
pub const fn mxaccess_codec::status::MxStatus::from_packed_u32(packed: u32) -> Self
|
||||
pub fn mxaccess_codec::status::MxStatus::is_ok(&self) -> bool
|
||||
pub const fn mxaccess_codec::status::MxStatus::to_packed_u32(self) -> u32
|
||||
impl core::clone::Clone for mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::status::MxStatus::clone(&self) -> mxaccess_codec::status::MxStatus
|
||||
impl core::cmp::Eq for mxaccess_codec::status::MxStatus
|
||||
@@ -2244,7 +2257,9 @@ pub mxaccess_codec::NmxOperationStatusMessage::status: mxaccess_codec::status::M
|
||||
pub mxaccess_codec::NmxOperationStatusMessage::status_code: u16
|
||||
impl mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::is_mx_access_write_complete(&self) -> bool
|
||||
pub const fn mxaccess_codec::operation_status::NmxOperationStatusMessage::promote_to_typed(&self) -> mxaccess_codec::status::MxStatus
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_inner(inner: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::try_parse_process_data_received_body(body: &[u8]) -> core::result::Result<Self, mxaccess_codec::error::CodecError>
|
||||
impl core::clone::Clone for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub fn mxaccess_codec::operation_status::NmxOperationStatusMessage::clone(&self) -> mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
impl core::cmp::Eq for mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
|
||||
@@ -57,6 +57,65 @@ impl core::marker::UnsafeUnpin for mxaccess::asb_session::AsbSubscription
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::asb_session::AsbSubscription
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::asb_session::AsbSubscription
|
||||
pub mod mxaccess::session
|
||||
#[non_exhaustive] pub enum mxaccess::session::OperationKind
|
||||
pub mxaccess::session::OperationKind::Activate
|
||||
pub mxaccess::session::OperationKind::Other
|
||||
pub mxaccess::session::OperationKind::Read
|
||||
pub mxaccess::session::OperationKind::Subscribe
|
||||
pub mxaccess::session::OperationKind::Suspend
|
||||
pub mxaccess::session::OperationKind::Unsubscribe
|
||||
pub mxaccess::session::OperationKind::Write
|
||||
pub mxaccess::session::OperationKind::WriteSecured
|
||||
impl core::clone::Clone for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::clone(&self) -> mxaccess::session::OperationKind
|
||||
impl core::cmp::Eq for mxaccess::session::OperationKind
|
||||
impl core::cmp::PartialEq for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::eq(&self, other: &mxaccess::session::OperationKind) -> bool
|
||||
impl core::fmt::Debug for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::hash::Hash for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
|
||||
impl core::marker::Copy for mxaccess::session::OperationKind
|
||||
impl core::marker::StructuralPartialEq for mxaccess::session::OperationKind
|
||||
impl core::marker::Freeze for mxaccess::session::OperationKind
|
||||
impl core::marker::Send for mxaccess::session::OperationKind
|
||||
impl core::marker::Sync for mxaccess::session::OperationKind
|
||||
impl core::marker::Unpin for mxaccess::session::OperationKind
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationKind
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationKind
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationKind
|
||||
#[non_exhaustive] pub struct mxaccess::session::OperationContext
|
||||
pub mxaccess::session::OperationContext::correlation_id: [u8; 16]
|
||||
pub mxaccess::session::OperationContext::op_kind: mxaccess::session::OperationKind
|
||||
pub mxaccess::session::OperationContext::reference: core::option::Option<alloc::sync::Arc<str>>
|
||||
pub mxaccess::session::OperationContext::retry_count: u32
|
||||
impl core::clone::Clone for mxaccess::session::OperationContext
|
||||
pub fn mxaccess::session::OperationContext::clone(&self) -> mxaccess::session::OperationContext
|
||||
impl core::fmt::Debug for mxaccess::session::OperationContext
|
||||
pub fn mxaccess::session::OperationContext::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::marker::Freeze for mxaccess::session::OperationContext
|
||||
impl core::marker::Send for mxaccess::session::OperationContext
|
||||
impl core::marker::Sync for mxaccess::session::OperationContext
|
||||
impl core::marker::Unpin for mxaccess::session::OperationContext
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationContext
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationContext
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationContext
|
||||
#[non_exhaustive] pub struct mxaccess::session::OperationStatus
|
||||
pub mxaccess::session::OperationStatus::context: core::option::Option<mxaccess::session::OperationContext>
|
||||
pub mxaccess::session::OperationStatus::is_during_recovery: bool
|
||||
pub mxaccess::session::OperationStatus::raw: mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub mxaccess::session::OperationStatus::status: mxaccess_codec::status::MxStatus
|
||||
impl core::clone::Clone for mxaccess::session::OperationStatus
|
||||
pub fn mxaccess::session::OperationStatus::clone(&self) -> mxaccess::session::OperationStatus
|
||||
impl core::fmt::Debug for mxaccess::session::OperationStatus
|
||||
pub fn mxaccess::session::OperationStatus::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::marker::Freeze for mxaccess::session::OperationStatus
|
||||
impl core::marker::Send for mxaccess::session::OperationStatus
|
||||
impl core::marker::Sync for mxaccess::session::OperationStatus
|
||||
impl core::marker::Unpin for mxaccess::session::OperationStatus
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationStatus
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationStatus
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationStatus
|
||||
pub struct mxaccess::session::SessionInner
|
||||
impl core::fmt::Debug for mxaccess::session::SessionInner
|
||||
pub fn mxaccess::session::SessionInner::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
@@ -208,6 +267,33 @@ impl core::marker::Unpin for mxaccess::Error
|
||||
impl core::marker::UnsafeUnpin for mxaccess::Error
|
||||
impl !core::panic::unwind_safe::RefUnwindSafe for mxaccess::Error
|
||||
impl !core::panic::unwind_safe::UnwindSafe for mxaccess::Error
|
||||
#[non_exhaustive] pub enum mxaccess::OperationKind
|
||||
pub mxaccess::OperationKind::Activate
|
||||
pub mxaccess::OperationKind::Other
|
||||
pub mxaccess::OperationKind::Read
|
||||
pub mxaccess::OperationKind::Subscribe
|
||||
pub mxaccess::OperationKind::Suspend
|
||||
pub mxaccess::OperationKind::Unsubscribe
|
||||
pub mxaccess::OperationKind::Write
|
||||
pub mxaccess::OperationKind::WriteSecured
|
||||
impl core::clone::Clone for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::clone(&self) -> mxaccess::session::OperationKind
|
||||
impl core::cmp::Eq for mxaccess::session::OperationKind
|
||||
impl core::cmp::PartialEq for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::eq(&self, other: &mxaccess::session::OperationKind) -> bool
|
||||
impl core::fmt::Debug for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::hash::Hash for mxaccess::session::OperationKind
|
||||
pub fn mxaccess::session::OperationKind::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
|
||||
impl core::marker::Copy for mxaccess::session::OperationKind
|
||||
impl core::marker::StructuralPartialEq for mxaccess::session::OperationKind
|
||||
impl core::marker::Freeze for mxaccess::session::OperationKind
|
||||
impl core::marker::Send for mxaccess::session::OperationKind
|
||||
impl core::marker::Sync for mxaccess::session::OperationKind
|
||||
impl core::marker::Unpin for mxaccess::session::OperationKind
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationKind
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationKind
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationKind
|
||||
#[non_exhaustive] pub enum mxaccess::ProtocolError
|
||||
pub mxaccess::ProtocolError::Decode
|
||||
pub mxaccess::ProtocolError::Decode::buffer_len: usize
|
||||
@@ -391,6 +477,38 @@ impl core::marker::Unpin for mxaccess::DataChange
|
||||
impl core::marker::UnsafeUnpin for mxaccess::DataChange
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::DataChange
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::DataChange
|
||||
#[non_exhaustive] pub struct mxaccess::OperationContext
|
||||
pub mxaccess::OperationContext::correlation_id: [u8; 16]
|
||||
pub mxaccess::OperationContext::op_kind: mxaccess::session::OperationKind
|
||||
pub mxaccess::OperationContext::reference: core::option::Option<alloc::sync::Arc<str>>
|
||||
pub mxaccess::OperationContext::retry_count: u32
|
||||
impl core::clone::Clone for mxaccess::session::OperationContext
|
||||
pub fn mxaccess::session::OperationContext::clone(&self) -> mxaccess::session::OperationContext
|
||||
impl core::fmt::Debug for mxaccess::session::OperationContext
|
||||
pub fn mxaccess::session::OperationContext::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::marker::Freeze for mxaccess::session::OperationContext
|
||||
impl core::marker::Send for mxaccess::session::OperationContext
|
||||
impl core::marker::Sync for mxaccess::session::OperationContext
|
||||
impl core::marker::Unpin for mxaccess::session::OperationContext
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationContext
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationContext
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationContext
|
||||
#[non_exhaustive] pub struct mxaccess::OperationStatus
|
||||
pub mxaccess::OperationStatus::context: core::option::Option<mxaccess::session::OperationContext>
|
||||
pub mxaccess::OperationStatus::is_during_recovery: bool
|
||||
pub mxaccess::OperationStatus::raw: mxaccess_codec::operation_status::NmxOperationStatusMessage
|
||||
pub mxaccess::OperationStatus::status: mxaccess_codec::status::MxStatus
|
||||
impl core::clone::Clone for mxaccess::session::OperationStatus
|
||||
pub fn mxaccess::session::OperationStatus::clone(&self) -> mxaccess::session::OperationStatus
|
||||
impl core::fmt::Debug for mxaccess::session::OperationStatus
|
||||
pub fn mxaccess::session::OperationStatus::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
|
||||
impl core::marker::Freeze for mxaccess::session::OperationStatus
|
||||
impl core::marker::Send for mxaccess::session::OperationStatus
|
||||
impl core::marker::Sync for mxaccess::session::OperationStatus
|
||||
impl core::marker::Unpin for mxaccess::session::OperationStatus
|
||||
impl core::marker::UnsafeUnpin for mxaccess::session::OperationStatus
|
||||
impl core::panic::unwind_safe::RefUnwindSafe for mxaccess::session::OperationStatus
|
||||
impl core::panic::unwind_safe::UnwindSafe for mxaccess::session::OperationStatus
|
||||
pub struct mxaccess::RecoveryPolicy
|
||||
pub mxaccess::RecoveryPolicy::delay: core::time::Duration
|
||||
pub mxaccess::RecoveryPolicy::max_attempts: u32
|
||||
@@ -437,6 +555,8 @@ pub async fn mxaccess::Session::callback_exporter_addr(&self) -> core::option::O
|
||||
pub fn mxaccess::Session::callbacks(&self) -> tokio::sync::broadcast::Receiver<alloc::sync::Arc<mxaccess_codec::subscription_message::NmxSubscriptionMessage>>
|
||||
pub async fn mxaccess::Session::connect_nmx(addr: core::net::socket_addr::SocketAddr, options: mxaccess::SessionOptions, ntlm: mxaccess_rpc::ntlm::NtlmClientContext, service_ipid: mxaccess_rpc::guid::Guid, resolver: alloc::sync::Arc<dyn mxaccess_galaxy::resolver::Resolver>, recovery: mxaccess::RecoveryPolicy) -> core::result::Result<Self, mxaccess::Error>
|
||||
pub async fn mxaccess::Session::has_recovery_factory(&self) -> bool
|
||||
pub fn mxaccess::Session::operation_status_events(&self) -> tokio::sync::broadcast::Receiver<alloc::sync::Arc<mxaccess::session::OperationStatus>>
|
||||
pub fn mxaccess::Session::operation_status_stream(&self) -> impl futures_core::stream::Stream<Item = core::result::Result<alloc::sync::Arc<mxaccess::session::OperationStatus>, mxaccess::Error>> + core::marker::Send
|
||||
pub async fn mxaccess::Session::read(&self, reference: &str, timeout: core::time::Duration) -> core::result::Result<mxaccess::DataChange, mxaccess::Error>
|
||||
pub async fn mxaccess::Session::recover_connection(&self, policy: mxaccess::RecoveryPolicy) -> core::result::Result<(), mxaccess::Error>
|
||||
pub fn mxaccess::Session::recovery_events(&self) -> tokio::sync::broadcast::Receiver<alloc::sync::Arc<mxaccess::RecoveryEvent>>
|
||||
|
||||
Reference in New Issue
Block a user