//! `mxaccess-asb-nettcp` — `[MS-NMF]` framing + `[MC-NBFX]/[MC-NBFS]` binary //! message encoding (the default `NetTcpBinding` encoder, **not** SOAP/XML). //! //! M5 work-in-progress — see `design/60-roadmap.md` and follow-up F18 in //! `design/followups.md` for the current sub-stream breakdown. //! //! The .NET reference at `src/MxAsbClient/MxAsbDataClient.cs:660-685` uses //! `new NetTcpBinding(SecurityMode.None)` with no encoder override, which //! selects `BinaryMessageEncodingBindingElement` by default. //! //! Implements two layers: //! 1. `[MS-NMF]` framing (preamble, preamble-ack, sized-envelope, end, fault) //! plus the reliable-session ack handling on the underlying `net.tcp` channel. //! 2. `[MC-NBFX]` binary XML + `[MC-NBFS]` static dictionary that holds the //! SOAP/WS-Addressing/`IASBIDataV2`-action strings. //! //! …plus an [`auth`] sub-module that ports the .NET `AsbSystemAuthenticator` //! (DH key exchange + HMAC signing + AES-128/PBKDF2-SHA1 derivation). #![forbid(unsafe_code)] pub mod auth; pub mod nbfs; pub mod nbfx; pub mod nmf; pub use auth::AuthError; pub use nbfs::{StaticEntry, lookup_static, position_of_static}; pub use nbfx::{ DynamicDictionary, NbfxError, NbfxName, NbfxText, NbfxToken, decode_tokens, encode_tokens, }; pub use nmf::{NmfEncoding, NmfError, NmfMode, NmfRecord, NmfRecordType};