RDKDEV-1423 Add ThunderClientLibraries Documentation - #338
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a comprehensive component-level documentation page for ThunderClientLibraries, describing the role of the client libraries, their design patterns (COM-RPC usage, interface acquisition, lifecycle), and integration expectations for consumers.
Changes:
- Introduces a new
docs/README.mdwith architecture/design narrative and Mermaid diagrams. - Documents threading model, state/lifecycle flows, and example call flows.
- Adds module interaction matrices and configuration parameters.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (3)
docs/README.md:7
- The intro’s Windows fallback example only mentions
127.0.0.1:63000, but in this repo ProvisionProxy defaults to127.0.0.1:7777on Windows whenPROVISION_PATHis unset (while SecurityAgent uses127.0.0.1:63000). Suggest either removing the specific port example or listing both so readers don’t assume a single default port.
At the device level, these libraries serve processes that sit outside the Thunder plugin host but require access to capabilities that are managed centrally inside it. Examples include media pipeline processes that require DRM session creation through OpenCDM, web runtimes that need display or device capability metadata, and Bluetooth audio pipelines that need to stream audio frames to or from a paired device. On Linux/RDK-V, inter-process calls use UNIX domain sockets via Thunder's COM-RPC transport; on Windows builds, some clients fall back to TCP loopback (e.g., `127.0.0.1:63000`).
docs/README.md:110
- The Mermaid diagram declares
subgraph MSec["Media & Security"]twice and has an extraend, which will likely break Mermaid rendering or create unexpected nesting. Remove the duplicatesubgraphand matchingendso the graph parses cleanly.
subgraph MSec["Media & Security"]
subgraph MSec["Media & Security"]
OA["OpenCDM\n(IAccessorOCDM)"]
SAL["SecurityAgent\n(PluginHost::IAuthenticate)"]
CGL["Cryptography\n(ICryptography)"]
docs/README.md:407
- The configuration table lists Linux socket-path defaults, but on Windows the code falls back to TCP endpoints when these env vars are unset (
SecurityAgent:127.0.0.1:63000,Provisioning:127.0.0.1:7777). Updating the defaults/description here keeps the table accurate across platforms.
| `SECURITYAGENT_PATH` | env string | `/tmp/SecurityAgent/token` | UNIX domain socket path used to connect to the SecurityAgent plugin. |
| `OPEN_CDM_SERVER` | env string | `/tmp/ocdm` | UNIX domain socket path used to connect to the OpenCDMImplementation plugin. |
| `PROVISION_PATH` | env string | `/tmp/provision` | UNIX domain socket path used to connect to the Provisioning plugin. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
ef6eaf3 to
b71c4fd
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (3)
docs/README.md:407
- The configuration table lists Linux-only defaults and describes these values as "UNIX domain socket path". In the code, SecurityAgent and ProvisionProxy fall back to TCP loopback endpoints on Windows (
127.0.0.1:63000and127.0.0.1:7777). Please document the platform-specific defaults (or describe these as a generic COM-RPC endpoint) so the table remains accurate across supported platforms.
| `SECURITYAGENT_PATH` | env string | `/tmp/SecurityAgent/token` | UNIX domain socket path used to connect to the SecurityAgent plugin. |
| `OPEN_CDM_SERVER` | env string | `/tmp/ocdm` | UNIX domain socket path used to connect to the OpenCDMImplementation plugin. |
| `PROVISION_PATH` | env string | `/tmp/provision` | UNIX domain socket path used to connect to the Provisioning plugin. |
docs/README.md:107
- In the design diagram, several interface types are unqualified (
IAccessorOCDM,ICryptography,IProvisioning) while elsewhere in this document and in the codebase they are referenced asExchange::.... Using the fully qualified names here avoids ambiguity and keeps the documentation consistent.
OA["OpenCDM\n(IAccessorOCDM)"]
SAL["SecurityAgent\n(PluginHost::IAuthenticate)"]
CGL["Cryptography\n(ICryptography)"]
PPL["ProvisionProxy\n(IProvisioning)"]
docs/README.md:103
- The Mermaid diagram declares the same
MSecsubgraph twice (subgraph MSec[...]repeated). This is likely to break Mermaid parsing and/or produce an unexpected graph structure.
This issue also appears in the following locations of the same file:
- line 104
- line 405
subgraph MSec["Media & Security"]
subgraph MSec["Media & Security"]
RDKDEV-1423
Added component documentation for thunderclientlibraries
I have read the CLA Document and I hereby sign the CLA