Skip to content

Commit 4dc4443

Browse files
committed
feat: gateway abstraction layer for bidirectional communication over ws
1 parent 94b7bca commit 4dc4443

File tree

4 files changed

+203
-242
lines changed

4 files changed

+203
-242
lines changed

src/sdks/core/src/cpp/templates/Device/src/module_impl.cpp

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818

1919
#include "${info.title.lowercase}_impl.h"
20+
#include "Gateway/Gateway.h"
2021

2122
${if.implementations}
2223
namespace Firebolt {
@@ -30,23 +31,21 @@ namespace ${info.Title} {
3031
std::string version;
3132

3233
Firebolt::Error status = Firebolt::Error::NotConnected;
33-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
34-
if (transport != nullptr) {
35-
36-
status = transport->Invoke("${info.title.lowercase}.version", jsonParameters, jsonResult);
37-
if (status == Firebolt::Error::None) {
38-
!jsonResult.IsSet() ? jsonResult.Clear() : (void)0;
39-
!jsonResult.Sdk.IsSet() ? jsonResult.Sdk.Clear() : (void)0;
40-
jsonResult.Sdk.Major = static_cast<int32_t>(${major});
41-
jsonResult.Sdk.Minor = static_cast<int32_t>(${minor});
42-
jsonResult.Sdk.Patch = static_cast<int32_t>(${patch});
43-
jsonResult.Sdk.Readable = "${readable}";
44-
jsonResult.ToString(version);
45-
}
34+
status = FireboltSDK::Gateway::Instance().Request("${info.title.lowercase}.version", jsonParameters, jsonResult);
35+
if (status == Firebolt::Error::None) {
36+
!jsonResult.IsSet() ? jsonResult.Clear() : (void)0;
37+
!jsonResult.Sdk.IsSet() ? jsonResult.Sdk.Clear() : (void)0;
38+
jsonResult.Sdk.Major = static_cast<int32_t>(${major});
39+
jsonResult.Sdk.Minor = static_cast<int32_t>(${minor});
40+
jsonResult.Sdk.Patch = static_cast<int32_t>(${patch});
41+
jsonResult.Sdk.Readable = "${readable}";
42+
jsonResult.ToString(version);
43+
}
4644

47-
} else {
48-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
45+
if (err != nullptr) {
46+
*err = status;
4947
}
48+
5049
return version;
5150
}
5251
// Methods

src/sdks/core/src/cpp/templates/Lifecycle/src/module_impl.cpp

Lines changed: 29 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818

1919
#include "${info.title.lowercase}_impl.h"
20+
#include "Gateway/Gateway.h"
2021

2122
${if.implementations}
2223
namespace Firebolt {
@@ -40,7 +41,7 @@ static void readyDispatcher(const void* result) {
4041
}
4142

4243
// localCallback to update the state
43-
static void onReadyInnerCallback(void* notification, const void* userData, void* jsonResponse )
44+
static void onReadyInnerCallback(void* notification, const void* userData, void* jsonResponse)
4445
{
4546
const LifecycleImpl* selfConst = static_cast<const LifecycleImpl*>(userData);
4647
LifecycleImpl* self = const_cast<LifecycleImpl*>(selfConst);
@@ -61,11 +62,9 @@ static void onReadyInnerCallback(void* notification, const void* userData, void*
6162

6263
}
6364
}
64-
65-
6665

6766
/* ready - Notify the platform that the app is ready */
68-
void ${info.Title}Impl::ready(Firebolt::Error *err) {
67+
void ${info.Title}Impl::ready(Firebolt::Error *err) {
6968
Firebolt::Error status = Firebolt::Error::NotConnected;
7069

7170
JsonObject jsonParameters;
@@ -76,63 +75,48 @@ void ${info.Title}Impl::ready(Firebolt::Error *err) {
7675
status = FireboltSDK::Event::Instance().Prioritize<JsonData_LifecycleEvent>("lifecycle.onInactive", jsonParameters, onReadyInnerCallback, (void*)nullptr, this);
7776
status = FireboltSDK::Event::Instance().Prioritize<JsonData_LifecycleEvent>("lifecycle.onSuspended", jsonParameters, onReadyInnerCallback, (void*)nullptr, this);
7877
status = FireboltSDK::Event::Instance().Prioritize<JsonData_LifecycleEvent>("lifecycle.onUnloading", jsonParameters, onReadyInnerCallback, (void*)nullptr, this);
79-
80-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
81-
if (transport != nullptr) {
82-
WPEFramework::Core::JSON::VariantContainer jsonResult;
83-
status = transport->Invoke("lifecycle.ready", jsonParameters, jsonResult);
84-
if (status == Firebolt::Error::None) {
85-
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Lifecycle.ready is successfully invoked");
86-
87-
WPEFramework::Core::ProxyType<WPEFramework::Core::IDispatch> job = WPEFramework::Core::ProxyType<WPEFramework::Core::IDispatch>(WPEFramework::Core::ProxyType<FireboltSDK::Worker>::Create(readyDispatcher, nullptr));
88-
WPEFramework::Core::IWorkerPool::Instance().Submit(job);
89-
} else {
90-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in invoking lifecycle.ready: %d", status);
91-
if (err != nullptr) {
92-
*err = status;
93-
}
94-
}
9578

79+
WPEFramework::Core::JSON::VariantContainer jsonResult;
80+
status = FireboltSDK::Gateway::Instance().Request("lifecycle.ready", jsonParameters, jsonResult);
81+
if (status == Firebolt::Error::None) {
82+
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Lifecycle.ready is successfully invoked");
83+
84+
WPEFramework::Core::ProxyType<WPEFramework::Core::IDispatch> job = WPEFramework::Core::ProxyType<WPEFramework::Core::IDispatch>(WPEFramework::Core::ProxyType<FireboltSDK::Worker>::Create(readyDispatcher, nullptr));
85+
WPEFramework::Core::IWorkerPool::Instance().Submit(job);
9686
} else {
97-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
98-
if (err != nullptr) {
99-
*err = status;
100-
}
87+
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in invoking lifecycle.ready: %d", status);
10188
}
102-
}
10389

90+
if (err != nullptr) {
91+
*err = status;
92+
}
93+
}
10494

10595
/* state - return the state of the app */
10696
std::string ${info.Title}Impl::state(Firebolt::Error *err) {
10797
std::cout << "**CURRENT STATE OF THE APP::::**" << currentState << std::endl;
10898
return currentState;
10999
}
110100

111-
112-
113101
/* finished - Notify the platform that the app is done unloading */
114-
void ${info.Title}Impl::finished(Firebolt::Error *err)
102+
void ${info.Title}Impl::finished(Firebolt::Error *err)
115103
{
116104
Firebolt::Error status = Firebolt::Error::NotConnected;
117-
if(currentState == "unloading")
118-
{
119-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
120-
if (transport != nullptr) {
121-
122-
JsonObject jsonParameters;
123-
124-
WPEFramework::Core::JSON::VariantContainer jsonResult;
125-
status = transport->Invoke("lifecycle.finished", jsonParameters, jsonResult);
126-
if (status == Firebolt::Error::None) {
127-
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Lifecycle.finished is successfully invoked");
128-
129-
}
130-
131-
} else {
132-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
133-
}
105+
if(currentState == "unloading")
106+
{
107+
JsonObject jsonParameters;
108+
109+
WPEFramework::Core::JSON::VariantContainer jsonResult;
110+
status = FireboltSDK::Gateway::Instance().Request("lifecycle.finished", jsonParameters, jsonResult);
111+
if (status == Firebolt::Error::None) {
112+
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Lifecycle.finished is successfully invoked");
134113
}
135114

115+
if (err != nullptr) {
116+
*err = status;
117+
}
118+
}
119+
136120
return;
137121
}
138122

src/sdks/core/src/cpp/templates/Metrics/src/module_impl.cpp

Lines changed: 32 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -17,88 +17,70 @@
1717
*/
1818

1919
#include "${info.title.lowercase}_impl.h"
20-
20+
#include "Gateway/Gateway.h"
2121

2222
${if.implementations}
2323
namespace Firebolt {
2424
namespace ${info.Title} {
2525
${if.providers}
2626
/* ${PROVIDERS} */${end.if.providers}
2727

28-
/* ready - Inform the platform that your app is minimally usable. This method is called automatically by `Lifecycle.ready()` */
29-
bool ${info.Title}Impl::ready( Firebolt::Error *err )
28+
/* ready - Inform the platform that your app is minimally usable. This method is called automatically by `Lifecycle.ready()` */
29+
bool ${info.Title}Impl::ready( Firebolt::Error *err )
3030
{
3131
Firebolt::Error status = Firebolt::Error::NotConnected;
3232
bool success = false;
33-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
34-
if (transport != nullptr) {
35-
36-
JsonObject jsonParameters;
37-
38-
WPEFramework::Core::JSON::Boolean jsonResult;
39-
status = transport->Invoke("${info.title.lowercase}.ready", jsonParameters, jsonResult);
40-
if (status == Firebolt::Error::None) {
41-
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.ready is successfully invoked");
42-
success = jsonResult.Value();
43-
}
44-
45-
} else {
46-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
33+
34+
JsonObject jsonParameters;
35+
WPEFramework::Core::JSON::Boolean jsonResult;
36+
status = FireboltSDK::Gateway::Instance().Request("${info.title.lowercase}.ready", jsonParameters, jsonResult);
37+
if (status == Firebolt::Error::None) {
38+
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.ready is successfully invoked");
39+
success = jsonResult.Value();
4740
}
41+
4842
if (err != nullptr) {
4943
*err = status;
5044
}
5145

5246
return success;
5347
}
5448

55-
56-
/* signIn - Log a sign In event, called by Discovery.signIn(). */
57-
bool ${info.Title}Impl::signIn( Firebolt::Error *err )
49+
/* signIn - Log a sign In event, called by Discovery.signIn(). */
50+
bool ${info.Title}Impl::signIn( Firebolt::Error *err )
5851
{
5952
Firebolt::Error status = Firebolt::Error::NotConnected;
6053
bool success = false;
61-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
62-
if (transport != nullptr) {
63-
64-
JsonObject jsonParameters;
65-
66-
WPEFramework::Core::JSON::Boolean jsonResult;
67-
status = transport->Invoke("${info.title.lowercase}.signIn", jsonParameters, jsonResult);
68-
if (status == Firebolt::Error::None) {
69-
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.signOut is successfully invoked");
70-
success = jsonResult.Value();
71-
}
72-
73-
} else {
74-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
54+
55+
JsonObject jsonParameters;
56+
WPEFramework::Core::JSON::Boolean jsonResult;
57+
status = FireboltSDK::Gateway::Instance().Request("${info.title.lowercase}.signIn", jsonParameters, jsonResult);
58+
if (status == Firebolt::Error::None) {
59+
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.signOut is successfully invoked");
60+
success = jsonResult.Value();
7561
}
62+
7663
if (err != nullptr) {
7764
*err = status;
7865
}
7966
return success;
8067

81-
}
68+
}
69+
8270
/* signOut - Log a sign out event, called by Discovery.signOut(). */
83-
bool ${info.Title}Impl::signOut( Firebolt::Error *err )
71+
bool ${info.Title}Impl::signOut( Firebolt::Error *err )
8472
{
8573
Firebolt::Error status = Firebolt::Error::NotConnected;
8674
bool success = false;
87-
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement>* transport = FireboltSDK::Accessor::Instance().GetTransport();
88-
if (transport != nullptr) {
89-
90-
JsonObject jsonParameters;
91-
92-
WPEFramework::Core::JSON::Boolean jsonResult;
93-
status = transport->Invoke("${info.title.lowercase}.signOut", jsonParameters, jsonResult);
94-
if (status == Firebolt::Error::None) {
95-
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.signOut is successfully invoked");
96-
success = jsonResult.Value();
97-
}
98-
99-
} else {
100-
FIREBOLT_LOG_ERROR(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Error in getting Transport err = %d", status);
75+
76+
JsonObject jsonParameters;
77+
WPEFramework::Core::JSON::Boolean jsonResult;
78+
status = FireboltSDK::Gateway::Instance().Request("${info.title.lowercase}.signOut", jsonParameters, jsonResult);
79+
if (status == Firebolt::Error::None) {
80+
FIREBOLT_LOG_INFO(FireboltSDK::Logger::Category::OpenRPC, FireboltSDK::Logger::Module<FireboltSDK::Accessor>(), "Metrics.signOut is successfully invoked");
81+
success = jsonResult.Value();
10182
}
83+
10284
if (err != nullptr) {
10385
*err = status;
10486
}

0 commit comments

Comments
 (0)