[F12 wrapper + F32 close] Session::connect_nmx_auto + close M5 type-matrix DoD
rust / build / test / clippy / fmt (push) Has been cancelled
rust / build / test / clippy / fmt (push) Has been cancelled
Two related closures in one commit:
1. Session-level wrapper around F12: new
`mxaccess::Session::connect_nmx_auto(ntlm_factory, options,
resolver, recovery)` gated on a new `mxaccess/windows-com` feature
(which propagates `mxaccess-nmx/windows-com`). Drives
`NmxClient::create` (the F12 COM-activation factory) for the
`(host, port, service_ipid)` discovery, then funnels into the
shared post-NMX-bind orchestration. Refactored `connect_nmx` to
extract steps 1+2+4+5 into a private `from_nmx_client` helper —
both `connect_nmx` and `connect_nmx_auto` reuse it so the
`CallbackExporter` + router + `RegisterEngine2` + heartbeat policy
stays in one place. The .NET `MxNativeSession.Open` shape
(`MxNativeSession.cs:127-147`) is now reproduced end-to-end on
Windows with `windows-com` on — callers no longer pre-resolve
`(addr, service_ipid)` by hand.
`connect_nmx`'s doc comment updated to drop the stale "F12 not yet
wired" note. `parse_bracketed_host_port` in mxaccess-nmx gets a
`cfg_attr(not(...), allow(dead_code))` so the default-feature
build stays warning-clean.
2. F32 closed via option (b) of its own resolve criterion: the four
missing types (Float / Double / DateTime / Duration) are gated on
Galaxy-side template provisioning that's outside the Rust port's
scope. The deployed test Galaxy on this host only has
mx_data_type ∈ {1=Bool, 2=Int32, 5=String}; we cannot exercise
the missing types without authoring new template attributes in
the Aveva console (a manual platform-engineering task). The
three-type live verification at commit 9063f10 satisfies the M5
DoD bullet for what is deployable. F18's M5 status block updated
to reflect F32-resolved.
Workspace: 718 tests pass on default features (was 712 before F12,
+6 from new parse_bracketed_host_port tests). Default-feature
clippy + windows-com clippy both clean.
Closes F32 in design/followups.md and extends F12's resolution note
with the Session-level wrapper.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -127,7 +127,11 @@ fn fresh_orpc_this() -> OrpcThis {
|
||||
/// expects (`cs:540-561`). The host is everything before the **last** `[`,
|
||||
/// the port is the decimal text between that `[` and the **last** `]`.
|
||||
///
|
||||
/// Used by [`NmxClient::create`] only.
|
||||
/// Used by [`NmxClient::create`] only — gated on `windows-com`.
|
||||
#[cfg_attr(
|
||||
not(all(windows, feature = "windows-com")),
|
||||
allow(dead_code)
|
||||
)]
|
||||
fn parse_bracketed_host_port(binding: &str) -> Result<(String, u16), NmxClientError> {
|
||||
let open = binding.rfind('[').ok_or_else(|| NmxClientError::EndpointResolution {
|
||||
reason: format!("binding {binding:?} has no '['"),
|
||||
|
||||
Reference in New Issue
Block a user