Files
2026-04-17 14:55:32 -04:00

6.2 KiB
Raw Permalink Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.CommonCore/Interface/Networking/INetworkingView.cs
Common/DTS.CommonCore/Interface/Networking/INetworkAdapterView.cs
Common/DTS.CommonCore/Interface/Networking/INetworkAdapterViewModel.cs
Common/DTS.CommonCore/Interface/Networking/INetworkingViewModel.cs
2026-04-16T02:19:48.560146+00:00 Qwen/Qwen3-Coder-Next-FP8 1 9f8faed114584889

Networking

Documentation: Networking Interface Module

1. Purpose

This module defines a set of interfaces that establish the contract for networking-related UI and ViewModel layers within the applications MVVM (Model-View-ViewModel) architecture. It enables separation of concerns by decoupling networking functionality (e.g., multicast configuration, network adapter selection) from concrete implementations, supporting testability and modularity. Specifically, it provides typed interfaces for views (INetworkingView, INetworkAdapterView) and view models (INetworkingViewModel, INetworkAdapterViewModel) that manage network adapter state and SLICE6 multicast communication parameters.

2. Public Interface

INetworkingView

  • Signature: public interface INetworkingView : IBaseView
  • Behavior: Represents the view layer for the networking UI. Inherits from IBaseView, implying it participates in the base view lifecycle (e.g., binding, initialization). No additional members defined—acts as a marker interface for networking-specific views.

INetworkAdapterView

  • Signature: public interface INetworkAdapterView : IBaseView
  • Behavior: Represents the view layer for network adapter selection UI. Like INetworkingView, it is a marker interface inheriting IBaseView, used to identify views responsible for network adapter presentation.

INetworkAdapterViewModel

  • Signature: public interface INetworkAdapterViewModel : IBaseViewModel
  • Behavior: Manages state for network adapter selection. Exposes a single property:
    • SelectedNetworkInterface: Gets or sets the currently selected System.Net.NetworkInformation.NetworkInterface. This is the core data point for adapter-related logic.

INetworkingViewModel

  • Signature: public interface INetworkingViewModel : IBaseViewModel
  • Behavior: Coordinates high-level networking configuration, particularly for SLICE6 multicast communication. Key members:
    • View: Gets or sets the associated INetworkingView instance (enabling view-model-to-view binding).
    • SLICE6MulticastAddress: Gets or sets the IPv6 multicast address (e.g., "ff02::1:2") as a string.
    • SLICE6MulticastAddressHasError: Gets a bool indicating whether the current SLICE6MulticastAddress value is invalid (e.g., malformed or unreachable).
    • SLICE6MulticastCommandPort: Gets or sets the UDP port used for sending multicast commands (e.g., 5000).
    • SLICE6MulticastResponsePort: Gets or sets the UDP port used for receiving multicast responses (e.g., 5001).
    • SetStatus(StatusInfo.StatusState status, string message = "", decimal percentage = -1, int processId = 0): Updates the UI status (e.g., progress, error, success) via the view. Parameters align with StatusInfo.StatusState (from DTS.Common.Base) and support optional progress/message context.

3. Invariants

  • INetworkingViewModel:
    • SLICE6MulticastAddressHasError must be true if and only if SLICE6MulticastAddress is syntactically invalid or otherwise unusable (e.g., not a valid IPv6 multicast address).
    • SLICE6MulticastCommandPort and SLICE6MulticastResponsePort must be valid port numbers (065535), though validation is not enforced by the interface itself.
    • View must be assigned before SetStatus is called; otherwise, behavior is undefined (no null-safety guaranteed in interface).
  • INetworkAdapterViewModel:
    • SelectedNetworkInterface may be null (e.g., if no adapter is selected), but implementations are expected to handle null gracefully (e.g., disable dependent operations).
  • General: All interfaces extend IBaseViewModel/IBaseView, implying adherence to base lifecycle contracts (e.g., disposal, initialization), though specifics are defined in DTS.Common.Base.

4. Dependencies

  • Depends on:
    • DTS.Common.Base (provides IBaseView, IBaseViewModel, and StatusInfo.StatusState).
    • System.Net.NetworkInformation (for NetworkInterface).
    • System.Collections.Generic, System.Threading.Tasks, DTS.Common.Events (via INetworkingViewModel, though no methods use them directly—likely for future extensibility or internal implementation).
  • Depended on by:
    • Concrete implementations of networking views (e.g., WPF/WinForms UI pages) and view models (e.g., NetworkingViewModel, NetworkAdapterViewModel).
    • Likely consumed by higher-level modules managing network configuration, device discovery, or SLICE6 protocol communication (inferred from SLICE6Multicast* naming).

5. Gotchas

  • SLICE6MulticastAddressHasError is read-only: Validation state is exposed via a getter, but the interface provides no method to explicitly trigger validation. Implementations must self-validate (e.g., on property setter or external events).
  • No explicit error details: SLICE6MulticastAddressHasError only indicates whether an error exists, not why. Consumers must parse SLICE6MulticastAddress or rely on implementation-specific logging.
  • SetStatus signature is generic: The method uses StatusInfo.StatusState (from DTS.Common.Base), but the interface does not define what states exist (e.g., Idle, Processing, Error). Consumers must reference StatusInfo to interpret status transitions.
  • No async support in INetworkingViewModel: Despite System.Threading.Tasks being imported, no async methods are declared—suggesting networking operations may be handled elsewhere or via side effects.
  • View property is bidirectional but unenforced: While INetworkingViewModel exposes a View property, the interface does not specify when it must be set (e.g., during construction vs. binding). Null assignments may cause runtime failures in SetStatus.

None identified beyond the above.