-
Notifications
You must be signed in to change notification settings - Fork 17
RDKEMW-12082: Interface Changes for RDKAppManagers plugin #752
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: topic/RDKEMW-13976
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,294 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // IApplicationService.h | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Thunder RPC interface definitions for AS Services | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Uses Thunder header-based code generation approach | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // USAGE: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Run Thunder ProxyStubGenerator or JsonGenerator on this file to generate: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // - JSON-RPC proxy classes (client-side for asproxy) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // - JSON-RPC stub registration (server-side for services) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // - Marshalling/unmarshalling code | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #pragma once | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #include "Module.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| namespace WPEFramework | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| namespace Exchange | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @json 1.0.0 @text:keep | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @brief Request interface for HTTP-style requests | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // This interface handles GET/POST/DELETE requests similar to HTTP REST APIs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| struct EXTERNAL IApplicationServiceRequest : virtual public Core::IUnknown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| enum | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ID = ID_APPLICATION_SERVICE_REQUEST | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @brief Process an HTTP-style request | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param flags Request type flags: GET=0x01, POST=0x02, DELETE=0x04 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param url Request URL path (e.g., "/as/network/ipconfig/settings") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param headers HTTP headers as JSON object string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param queryParams Query parameters as JSON object string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param body Request body (for POST requests) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param code HTTP status code (output) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param responseHeaders Response headers as JSON object string (output) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @param responseBody Response body as JSON string (output) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @return Error code: ERROR_NONE on success | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @text:request | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+32
to
+42
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| virtual Core::hresult Request( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+41
to
+43
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const uint32_t flags, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+32
to
+44
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // @brief Process an HTTP-style request | |
| // @param flags Request type flags: GET=0x01, POST=0x02, DELETE=0x04 | |
| // @param url Request URL path (e.g., "/as/network/ipconfig/settings") | |
| // @param headers HTTP headers as JSON object string | |
| // @param queryParams Query parameters as JSON object string | |
| // @param body Request body (for POST requests) | |
| // @param code HTTP status code (output) | |
| // @param responseHeaders Response headers as JSON object string (output) | |
| // @param responseBody Response body as JSON string (output) | |
| // @return Error code: ERROR_NONE on success | |
| // @text:request | |
| virtual Core::hresult Request( | |
| const uint32_t flags, | |
| enum REQUEST_FLAGS : uint32_t { | |
| REQUEST_GET = 0x01 /* @text REQUEST_GET */, | |
| REQUEST_POST = 0x02 /* @text REQUEST_POST */, | |
| REQUEST_DELETE = 0x04 /* @text REQUEST_DELETE */ | |
| }; | |
| // @brief Process an HTTP-style request | |
| // @param flags Request type flags. Bitmask of REQUEST_FLAGS (e.g., REQUEST_GET, REQUEST_POST, REQUEST_DELETE) | |
| // @param url Request URL path (e.g., "/as/network/ipconfig/settings") | |
| // @param headers HTTP headers as JSON object string | |
| // @param queryParams Query parameters as JSON object string | |
| // @param body Request body as JSON string (typically used for POST requests) | |
| // @param code HTTP status code (output) | |
| // @param responseHeaders Response headers as JSON object string (output) | |
| // @param responseBody Response body as JSON string (output) | |
| // @retval Core::ERROR_NONE: Request processed successfully | |
| // @retval Core::ERROR_GENERAL: Request processing failed | |
| // @text:request | |
| virtual Core::hresult Request( | |
| const REQUEST_FLAGS flags, |
Copilot
AI
Feb 28, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IApplicationServiceListener::INotification defines notification methods as pure virtual (= 0). Notification interfaces in these API headers must provide default (empty) implementations and must not use pure virtual methods, to keep implementation and binary compatibility expectations consistent.
Copilot
AI
Feb 28, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Notification naming doesn’t follow the documented on[Object][Action] pattern. For example, OnNotifyWebSocketUpdate / @text:onNotifyWebSocketUpdate uses an extra “Notify” prefix that makes the object/action unclear. Please rename notifications (and their @text names) to match the pattern (e.g., OnWebSocketUpdate with // @text onWebSocketUpdate).
Copilot
AI
Feb 28, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Register / Unregister are missing the required interface documentation tags (@brief, @param, and (where applicable) @retval). Please document these methods consistently so the generated API docs are complete.
| }; | |
| virtual Core::hresult Register(IApplicationServiceListener::INotification *notification) = 0; | |
| }; | |
| // @brief Register a notification sink for application service listener events. | |
| // @param notification Pointer to the notification interface instance to be registered. | |
| // @retval Core::ERROR_NONE: Registration succeeded. | |
| // @retval Core::ERROR_BAD_REQUEST: The notification parameter is null or invalid. | |
| // @retval Core::ERROR_ALREADY_CONNECTED: The notification interface is already registered. | |
| // @text register | |
| virtual Core::hresult Register(IApplicationServiceListener::INotification *notification) = 0; | |
| // @brief Unregister a previously registered notification sink. | |
| // @param notification Pointer to the notification interface instance to be unregistered. | |
| // @retval Core::ERROR_NONE: Unregistration succeeded. | |
| // @retval Core::ERROR_BAD_REQUEST: The notification parameter is null or invalid. | |
| // @retval Core::ERROR_UNKNOWN_KEY: The specified notification interface is not currently registered. | |
| // @text unregister |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -348,6 +348,17 @@ namespace Exchange { | |||||
| ID_GOOGLE_CAST_RM_DELEGATE_NOTIFICATION = ID_GOOGLE_CAST + 3, | ||||||
|
|
||||||
| ID_RESOURCEMANAGER = ID_ENTOS_OFFSET + 0x480, | ||||||
|
|
||||||
| ID_APPLICATION_SERVICE_REQUEST = ID_ENTOS_OFFSET + 0x490, | ||||||
|
||||||
| ID_APPLICATION_SERVICE_REQUEST = ID_ENTOS_OFFSET + 0x490, | |
| ID_APPLICATION_SERVICE_REQUEST = ID_ENTOS_OFFSET + 0x490, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The file header is missing the standard Apache 2.0 copyright/license block that other
apis/**/I*.hinterface headers include. Please add the repository-standard license header at the top of this new API file for consistency and compliance.