[M2] mxaccess-rpc: OXID + RemQI body codecs (wave 2)
Lands M2 wave 2 — two pure-Rust body-codec modules under crates/mxaccess-rpc, plus a small inline ORPC framing port and a crate-level type consolidation. Resolves F7+F8 from wave 1. New modules - guid.rs (4 tests) — hoisted from objref::Guid; shared by all of mxaccess-rpc. Resolves F7. - error.rs — hoisted RpcError union (ShortRead, UnexpectedPacketType, UnknownPacketType, InvalidFragmentLength, TruncatedBindBody, InvalidAuthTrailer, MissingAuthValue, Decode). Resolves F8. - orpc.rs (8 tests) — port of OrpcStructures.cs:1-141. ComVersion, OrpcThis (32-byte header), OrpcThat (8-byte header), MInterfacePointer (length-prefixed OBJREF), StdObjRef (40 bytes). - object_exporter.rs (~530 LoC, 20 tests) — port of ObjectExporterMessages.cs:1-141. IObjectExporter IID, opnums, ResolveOxid request encoder + ResolveOxidResult/Failure parsers. Owned-string protocol labels cleaned up via Cow upgrade rather than Box::leak (ComDualStringEntry::protocol is now Cow<'static, str>). - rem_unknown.rs (~340 LoC, 11 tests) — port of RemUnknownMessages.cs. IRemUnknown IID, RemQueryInterface request/response, RemQiResult. 4-byte NDR pad in REMQIRESULT preserved as pad_after_hresult per CLAUDE.md unknown-bytes rule. Test count delta: 277 -> 319 (+42; codec 215 unchanged, mxaccess-rpc 60 -> 102, codec parity 2 unchanged). Open followups touched: F7 + F8 resolved; F9, F10, F11 added. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,25 @@
|
||||
//! `mxaccess-rpc` — DCE/RPC + NTLMv2 + OBJREF + OXID + IRemUnknown::RemQueryInterface.
|
||||
//!
|
||||
//! M2 wave 1 landed: `ntlm`, `pdu`, `objref`. OXID resolution and
|
||||
//! `IRemUnknown::RemQueryInterface` follow in wave 2; the callback exporter
|
||||
//! in wave 3 — see `design/60-roadmap.md` and `design/dependencies.md`.
|
||||
//! - M2 wave 1 (landed): `ntlm`, `pdu`, `objref`.
|
||||
//! - M2 wave 2 (landed): `guid` + `error` (shared types — resolves F7+F8),
|
||||
//! `orpc` (ORPC framing), `object_exporter` (OXID resolution body codec),
|
||||
//! `rem_unknown` (`IRemUnknown::RemQueryInterface` body codec).
|
||||
//! - M2 wave 3 (next): callback exporter — see `design/60-roadmap.md` and
|
||||
//! `design/dependencies.md`.
|
||||
//!
|
||||
//! Internal `unsafe` is permitted only for `windows-rs` COM activation paths
|
||||
//! (per `design/00-overview.md` principle 3); all such calls must be wrapped
|
||||
//! in safe abstractions at the crate boundary. Wave 1 modules are pure-Rust
|
||||
//! and contain no `unsafe`.
|
||||
//! in safe abstractions at the crate boundary. All modules to date are
|
||||
//! pure-Rust and contain no `unsafe`.
|
||||
|
||||
// `mxaccess-rpc` is the only crate where internal unsafe is permitted (for
|
||||
// windows-rs COM calls). Public API stays safe.
|
||||
|
||||
pub mod error;
|
||||
pub mod guid;
|
||||
pub mod ntlm;
|
||||
pub mod object_exporter;
|
||||
pub mod objref;
|
||||
pub mod orpc;
|
||||
pub mod pdu;
|
||||
pub mod rem_unknown;
|
||||
|
||||
Reference in New Issue
Block a user