86 lines
6.2 KiB
Markdown
86 lines
6.2 KiB
Markdown
---
|
||
source_files:
|
||
- Common/DTS.Common/Interface/Networking/INetworkingView.cs
|
||
- Common/DTS.Common/Interface/Networking/INetworkAdapterView.cs
|
||
- Common/DTS.Common/Interface/Networking/INetworkAdapterViewModel.cs
|
||
- Common/DTS.Common/Interface/Networking/INetworkingViewModel.cs
|
||
generated_at: "2026-04-16T03:00:05.086114+00:00"
|
||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
schema_version: 1
|
||
sha256: "3ef2c7de36c1e3c6"
|
||
---
|
||
|
||
# Networking
|
||
|
||
## Documentation: Networking Interface Module
|
||
|
||
### 1. Purpose
|
||
This module defines the core interfaces for the networking layer’s view-model and view components within the DTS system. It establishes a contract for UI components responsible for displaying and managing network adapter selection and SLICE6 multicast communication settings. The interfaces are part of a layered architecture (likely MVVM), where `*ViewModel` interfaces encapsulate state and behavior, and `*View` interfaces represent the UI presentation layer—both inheriting from `IBaseView`/`IBaseViewModel` to integrate with the common base framework.
|
||
|
||
### 2. Public Interface
|
||
|
||
- **`INetworkingView`**
|
||
```csharp
|
||
public interface INetworkingView : IBaseView { }
|
||
```
|
||
*Represents the UI view for the networking module.* No additional members beyond the base view contract—implementation is expected to handle rendering of networking-related UI (e.g., adapter list, multicast config fields).
|
||
|
||
- **`INetworkAdapterView`**
|
||
```csharp
|
||
public interface INetworkAdapterView : IBaseView { }
|
||
```
|
||
*Represents the UI view for network adapter selection.* Like `INetworkingView`, it only inherits `IBaseView`, implying its implementation is responsible for UI-specific adapter display (e.g., a dropdown or list of `NetworkInterface` objects).
|
||
|
||
- **`INetworkAdapterViewModel`**
|
||
```csharp
|
||
public interface INetworkAdapterViewModel : IBaseViewModel
|
||
{
|
||
NetworkInterface SelectedNetworkInterface { get; set; }
|
||
}
|
||
```
|
||
*Manages state for network adapter selection.* Exposes a single property, `SelectedNetworkInterface`, which holds the currently selected `System.Net.NetworkInformation.NetworkInterface`. The property is read-write, implying the view model supports both programmatic and user-driven selection updates.
|
||
|
||
- **`INetworkingViewModel`**
|
||
```csharp
|
||
public interface INetworkingViewModel : IBaseViewModel
|
||
{
|
||
INetworkingView View { get; set; }
|
||
string SLICE6MulticastAddress { get; set; }
|
||
bool SLICE6MulticastAddressHasError { get; }
|
||
int SLICE6MulticastCommandPort { get; set; }
|
||
int SLICE6MulticastResponsePort { get; set; }
|
||
void SetStatus(StatusInfo.StatusState status, string message = "", decimal percentage = -1, int processId = 0);
|
||
}
|
||
```
|
||
*Manages state and behavior for the main networking configuration UI.*
|
||
- `View`: Binds to the associated `INetworkingView` instance (likely set by a framework or presenter).
|
||
- `SLICE6MulticastAddress`: Gets/sets the multicast IP address string used for SLICE6 communication.
|
||
- `SLICE6MulticastAddressHasError`: Read-only flag indicating whether the current `SLICE6MulticastAddress` value is invalid (e.g., malformed or unresolvable).
|
||
- `SLICE6MulticastCommandPort` / `SLICE6MulticastResponsePort`: Get/set integer port numbers for command and response multicast channels.
|
||
- `SetStatus(...)`: Updates the UI status bar with a `StatusInfo.StatusState` (e.g., `Idle`, `Processing`, `Error`), optional message, progress percentage (−1 if not applicable), and process ID for tracking.
|
||
|
||
### 3. Invariants
|
||
- `INetworkingViewModel` implementations must ensure `SLICE6MulticastAddressHasError` accurately reflects the validity of `SLICE6MulticastAddress` (e.g., `true` if the address is null, empty, or not a valid IPv4/IPv6 multicast address).
|
||
- `SelectedNetworkInterface` in `INetworkAdapterViewModel` must be non-null only when a valid `NetworkInterface` is selected; setting it to `null` likely indicates no selection.
|
||
- `View` property in `INetworkingViewModel` must be assigned before the view model is used to interact with the UI (e.g., before calling `SetStatus`).
|
||
- `SetStatus` must be thread-safe or callable from UI thread only (implementation-dependent; not specified in interface).
|
||
|
||
### 4. Dependencies
|
||
- **Internal dependencies**:
|
||
- `DTS.Common.Base` namespace (provides `IBaseView`, `IBaseViewModel`, and likely `StatusInfo.StatusState`).
|
||
- `System.Net.NetworkInformation` (for `NetworkInterface` type).
|
||
- `System.Threading.Tasks` (imported but no async methods declared—possibly reserved for future use or implementation).
|
||
- `DTS.Common.Events` (imported but no event types used in interface—likely for status change events or command bindings).
|
||
- **Consumers**:
|
||
- View implementations (e.g., WPF/WinForms controls) implementing `INetworkingView`/`INetworkAdapterView`.
|
||
- View model implementations (e.g., `NetworkingViewModel`, `NetworkAdapterViewModel`) implementing `INetworkingViewModel`/`INetworkAdapterViewModel`.
|
||
- Likely consumed by a presenter or controller layer (not visible in this module).
|
||
|
||
### 5. Gotchas
|
||
- `SLICE6MulticastAddressHasError` is read-only—validation logic must be implemented internally (e.g., on property setter or external validation trigger). The interface does not specify *when* or *how* this flag is updated.
|
||
- `SetStatus` parameters `percentage` and `processId` have defaults (`-1` and `0`), but their semantics (e.g., whether `percentage = -1` means "indeterminate" or "not applicable") are not documented here.
|
||
- `SelectedNetworkInterface` is a direct reference to `NetworkInterface`—implementations must handle disposal or lifecycle concerns if the underlying interface becomes unavailable (e.g., network cable unplugged).
|
||
- No methods for loading or refreshing the list of available network interfaces are exposed—assumed to be handled by external logic (e.g., in a concrete view model not shown).
|
||
- None of the interfaces define events (e.g., `PropertyChanged`, selection changed), implying eventing is handled via `IBaseViewModel`/`IBaseView` base contracts or external mechanisms (e.g., `DTS.Common.Events`).
|
||
|
||
*Note: No implementation details (e.g., validation rules for multicast addresses, error handling for port ranges) are present in the source—these must be inferred from concrete implementations.* |