Files
Marc Schier 87012a147f Machinery: add bounded inspection and result transfers (#4804)
# Description

- Add opt-in bounded browsing and strict reads with original source,
status, timestamp, and structured-value evidence. Preserve the existing
tolerant constructors and convenience projections, and wire options
through session extensions, factories, and hosting registration.
- Add selected-result streaming downloads with byte/request limits and
independent cleanup, using `TemporaryFileTransferClient.CopyToAsync`
from the client/server predecessor. Retain the detailed transfer
regressions in the Machinery test layer.
- Expose genuinely null unpublished result slots, carry the two
Machinery sample updates, and include the complete Machinery guide and
package README changes.

## Related Issues

- Related tracking issue: #4461; this extraction does not close it.
- Frozen source PR: #4462; this extraction does not close or modify it.
- Immediate predecessor: #4803 (`marcschier-extract-amb-changes`). The
earlier dependencies are client/server #4802 and core/types #4801.

## Checklist

_Put an `x` in the boxes that apply. You can complete these step by step
after opening the PR._

- [ ] I have signed the
[CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf)
and read the
[CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md)
doc.
- [ ] I have added tests that prove my fix is effective or that my
feature works and increased code coverage.
- [x] I have added all necessary documentation.
- [x] I have verified that my changes do not introduce (new) build or
analyzer warnings.
- [ ] I ran **all** tests locally using the **UA.slnx** solution against
at least .net **framework** and .net **10**, and all passed.
- [ ] I fixed **all** failing and flaky tests in the CI pipelines and
**all** CodeQL warnings.
- [ ] I have addressed **all** PR feedback received.
2026-10-16 12:24:35 +02:00
..

MachineryClient

A console client for any OPC 40001 server. It starts at the Machines folder, so it needs no NodeIds configured and works against a server it has never seen.

dotnet run --project samples/Machinery/MachineryClient -- --insecure
Option Meaning
--url <endpoint> The endpoint to connect to (default opc.tcp://localhost:62546/MachineryServer)
--insecure Accept any server certificate. Demo only.
--seconds <n> How long to stream state transitions (default 12; 0 skips)
--no-download Skip the OPC 40001-101 result download

What it does

  1. Enumerates the machines below the Machines folder.
  2. Reads each machine's OPC 40001-1 identification and its components.
  3. Reads MachineryItemState and MachineryOperationMode.
  4. Asks ResultManagement.GetLatestResult for the newest result, downloads its payload through the OPC 40001-101 transfer path, and releases the result handle it was given.
  5. Streams MachineryItemState transitions for a while.

Every step degrades rather than failing when the server publishes less: a machine without a Monitoring add-in simply reports no state.