8e695b9347
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>
45 lines
1.5 KiB
TOML
45 lines
1.5 KiB
TOML
[package]
|
|
name = "mxaccess"
|
|
description = "Async Tokio façade for AVEVA / Wonderware MXAccess. Exposes Session, Subscription, Transport trait, and the public Error model."
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
authors.workspace = true
|
|
|
|
[dependencies]
|
|
mxaccess-codec = { path = "../mxaccess-codec" }
|
|
mxaccess-callback = { path = "../mxaccess-callback" }
|
|
mxaccess-galaxy = { path = "../mxaccess-galaxy" }
|
|
mxaccess-nmx = { path = "../mxaccess-nmx" }
|
|
mxaccess-rpc = { path = "../mxaccess-rpc" }
|
|
mxaccess-asb = { path = "../mxaccess-asb" }
|
|
mxaccess-asb-nettcp = { path = "../mxaccess-asb-nettcp" }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tracing = { workspace = true }
|
|
futures-util = { workspace = true }
|
|
tokio-stream = { version = "0.1", features = ["sync"] }
|
|
rand = "0.8"
|
|
|
|
[dev-dependencies]
|
|
async-trait = { workspace = true }
|
|
|
|
[features]
|
|
default = []
|
|
# Transport feature gates land in M2-M5.
|
|
nmx = []
|
|
asb = []
|
|
metrics = []
|
|
serde = ["mxaccess-codec/serde"]
|
|
# `live` gates integration tests that hit a running AVEVA install. Driven by
|
|
# the `MX_LIVE` env var via `tools/Setup-LiveProbeEnv.ps1`.
|
|
live = []
|
|
# Pulls F12's `Session::connect_nmx_auto` constructor — the auto-resolving
|
|
# COM-activation path. Propagates to `mxaccess-nmx/windows-com`.
|
|
windows-com = ["mxaccess-nmx/windows-com"]
|
|
|
|
[lints]
|
|
workspace = true
|