refactor: device type registry system for future extensibility summary#172
Merged
refactor: device type registry system for future extensibility summary#172
Conversation
…support Introduces a trait-based registry system that allows querying device type capabilities without exposing new enum variants. This enables future device type additions without API breakage. - Add 'DeviceInfo` trait for device type metadata - Implement registry with 9 device types (Ethernet, WiFi, Bridge, etc.) - Registry provides display names, connection types, and capability queries - Thread-safe initialization with `OnceLock`
Extends DeviceType with methods that consult the device type registry for `Other(_)` variants. This allows users to query capabilities of device types not explicitly enumerated in the DeviceType enum. - Add `supports_scanning()`` method - Add `requires_specific_object()` method - Add `has_global_enabled_state()`` method - Add `connection_type_str()` method - Add `to_code()` method - Enhance Display to show registry names for `Other(_)` variants - Add comprehensive test coverage for new methods
Extracts repeated Settings proxy construction patterns into reusable helpers, reducing code duplication and improving maintainability. - Add `settings_proxy()` helper for Settings interface - Add `connection_settings_proxy()` helper for connection settings - Apply helpers in `connection_settings.rs` and `vpn.rs`
df1d896 to
52ec0e8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Device Type Registry (
types/device_type_registry.rs)DeviceTypeInfotrait for device type metadata (type codes, capabilities, connection types)OnceLockDeviceType Enhancements
supports_scanning()- query scan capabilityrequires_specific_object()- query if AP/target neededhas_global_enabled_state()- query radio control capabilityconnection_type_str()- get NM connection type stringto_code()- get raw type codeDisplaynow shows registry names forOther(_)variants (e.g.,Other(29)displays as "WireGuard")Settings Proxy Helpers
settings_proxy()andconnection_settings_proxy()helpersconnection_settings.rsandvpn.rsConnectionOptions
DefaultimplementationDeviceType::Other(_)variants now have proper names and capability queries via registry. Future device types can be added without API breakage.