Move interfaces from Thunder/plugins to Thunder/interfaces#2102
Open
nxtum wants to merge 10 commits intordkcentral:masterfrom
Open
Move interfaces from Thunder/plugins to Thunder/interfaces#2102nxtum wants to merge 10 commits intordkcentral:masterfrom
nxtum wants to merge 10 commits intordkcentral:masterfrom
Conversation
This was referenced Apr 27, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR restructures Thunder’s public COM/PluginHost interface headers and generated JSON artifacts by moving them out of Source/plugins/ into a new Source/interfaces/ library, and updates build files to consume the new layout across CMake and Visual Studio projects.
Changes:
- Introduces a new
Source/interfaces/component (headers + build targets) and wires it into the top-level build. - Updates
Source/plugins/andSource/Thunder/to include interfaces frominterfaces/...and consume JSON headers frominterfaces/json/.... - Adjusts Visual Studio solution/projects and CMake targets to link against the new
interfaceslibrary.
Reviewed changes
Copilot reviewed 33 out of 41 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Source/CMakeLists.txt | Adds INTERFACES option and builds Source/interfaces when enabled. |
| Source/interfaces/CMakeLists.txt | New Interfaces + ProxyStubs CMake targets; sets up stub/json generation and installs headers/json artifacts. |
| Source/interfaces/definitions.h | New definitions header for generated JSON enum sources (interfaces scope). |
| Source/interfaces/IDispatcher.h | New/relocated dispatcher interface header. |
| Source/interfaces/IController.h | Updates @insert paths to refer to interfaces/* headers. |
| Source/interfaces/IPlugin.h | New/relocated plugin interface header. |
| Source/interfaces/IShell.h | New/relocated shell interface header. |
| Source/interfaces/ISubSystem.h | New/relocated subsystem interface header. |
| Source/interfaces/IStateControl.h | New/relocated state control interface header. |
| Source/interfaces/IStateController.h | New/relocated state controller interface header. |
| Source/interfaces/IVirtualInput.h | New/relocated virtual input IPC types header. |
| Source/interfaces/interfaces.h | New umbrella header for including interfaces from the new component. |
| Source/interfaces/interfaces.vcxproj | New Visual Studio project for building interfaces and generating JSON code. |
| Source/interfaces/interfaces.vcxproj.filters | Filters for the new interfaces VS project. |
| Source/interfaces/Module.cpp | New interfaces module registration TU. |
| Source/interfaces/Module.h | New module header for Interfaces component (exports, includes). |
| Source/interfaces/proxystubs.vcxproj | Updates ProxyStub generation to include moved interfaces + new export macro. |
| Source/interfaces/proxystubs.vcxproj.filters | Adds generated stub source entry for StateController. |
| Source/plugins/CMakeLists.txt | Removes local interface/json generation; links Interfaces and pulls JSON enum sources from interfaces build output. |
| Source/plugins/Configuration.h | Switches interface includes to interfaces/*. |
| Source/plugins/definitions.h | Keeps generated-file include glue; now relies on interfaces include paths being available. |
| Source/plugins/JSONRPC.h | Switches interface includes to interfaces/*. |
| Source/plugins/Metadata.cpp | Switches interface includes to interfaces/*. |
| Source/plugins/Metadata.h | Switches controller + JSON headers to interfaces/* and interfaces/json/*. |
| Source/plugins/Module.cpp | Switches controller include to interfaces/IController.h. |
| Source/plugins/plugins.h | Removes direct inclusion of moved interfaces from the umbrella header (now included indirectly via other headers). |
| Source/plugins/plugins.vcxproj | Removes interface/json generation inputs; adds include path + link dependency on interfaces.lib. |
| Source/plugins/plugins.vcxproj.filters | Removes interface/generated entries from the Plugins filters (moved to Interfaces project). |
| Source/plugins/Service.h | Switches interface includes to interfaces/*. |
| Source/plugins/Shell.cpp | Switches shell include to interfaces/IShell.h. |
| Source/plugins/StateControl.cpp | Switches state control include to interfaces/IStateControl.h. |
| Source/plugins/StateControl.h | Switches state control include to interfaces/IStateControl.h. |
| Source/plugins/SubSystem.cpp | Switches subsystem include to interfaces/ISubSystem.h. |
| Source/plugins/SubSystem.h | Switches subsystem include to interfaces/ISubSystem.h. |
| Source/plugins/Types.h | Switches plugin/shell includes to interfaces/*. |
| Source/plugins/VirtualInput.h | Switches virtual input include to interfaces/IVirtualInput.h. |
| Source/Thunder/bridge.vcxproj | Adds interfaces include directory + links interfaces.lib. |
| Source/Thunder/CMakeLists.txt | Switches include dir to use interfaces/json generated headers. |
| Source/Thunder/Controller.cpp | Switches JSON include to <interfaces/json/json_IController.h>. |
| Source/Thunder/Controller.h | Switches JSON include to <interfaces/json/json_IController.h>. |
| Source/Thunder.sln | Adds new interfaces project; updates project dependencies/paths for proxystubs. |
Comments suppressed due to low confidence (2)
Source/interfaces/proxystubs.vcxproj:158
- The stub generator include paths are inconsistent across configurations: Release|x64 adds
-I "$(FrameworkPath)"but this Debug|Win32 command does not. If$(FrameworkPath)is required to resolve includes for the moved interfaces, the other configurations will fail to generate stubs. Make the include path consistent across all configurations (or remove it everywhere if it’s not needed).
Source/CMakeLists.txt:36 - PLUGINS now depends on the new Interfaces library, but the top-level options still allow INTERFACES=OFF while PLUGINS=ON. That configuration will break configuration/build; consider forcing INTERFACES ON when PLUGINS is enabled or adding a clear fatal error when PLUGINS is ON but INTERFACES is OFF.
"Include the interfaces library." ON)
option(PROCESS
"Include the COM hosting process executable." ON)
option(PLUGINS
"Include plugins library." ON)
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.
To be merged with the following:
WebPlatformForEmbedded/ThunderOnWindows#16
rdkcentral/ThunderInterfaces#476
rdkcentral/ThunderClientLibraries#336
WebPlatformForEmbedded/ThunderNanoServicesRDK#379
rdkcentral/ThunderNanoServices#966