Skip to content

Commit 869b042

Browse files
Problem: callback crashes in windows (fix #127) (#128)
refactoring
1 parent 2c7ec3a commit 869b042

File tree

4 files changed

+67
-67
lines changed

4 files changed

+67
-67
lines changed

extra-cpp-bindings/include/walletconnectcallback.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ class WalletConnectCallback {
4949
public:
5050
WalletConnectCallback();
5151
virtual ~WalletConnectCallback();
52-
virtual void onConnected(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const;
53-
virtual void onDisconnected(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const ;
54-
virtual void onConnecting(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const ;
55-
virtual void onUpdated(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const;
52+
virtual void onConnected(const WalletConnectSessionInfo& sessioninfo) const;
53+
virtual void onDisconnected(const WalletConnectSessionInfo& sessioninfo) const ;
54+
virtual void onConnecting(const WalletConnectSessionInfo& sessioninfo) const ;
55+
virtual void onUpdated(const WalletConnectSessionInfo& sessioninfo) const;
5656
};
5757

5858
std::unique_ptr<WalletConnectCallback> new_walletconnect_callback();

extra-cpp-bindings/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ mod ffi {
2323

2424
type WalletConnectCallback;
2525

26-
fn onConnected(&self, sessioninfo: UniquePtr<WalletConnectSessionInfo>);
27-
fn onDisconnected(&self, sessioninfo: UniquePtr<WalletConnectSessionInfo>);
28-
fn onConnecting(&self, sessioninfo: UniquePtr<WalletConnectSessionInfo>);
29-
fn onUpdated(&self, sessioninfo: UniquePtr<WalletConnectSessionInfo>);
26+
fn onConnected(&self, sessioninfo: &WalletConnectSessionInfo);
27+
fn onDisconnected(&self, sessioninfo: &WalletConnectSessionInfo);
28+
fn onConnecting(&self, sessioninfo: &WalletConnectSessionInfo);
29+
fn onUpdated(&self, sessioninfo: &WalletConnectSessionInfo);
3030
}
3131

3232
unsafe extern "C++" {

extra-cpp-bindings/src/walletconnect.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ async fn do_walletconnect_set_callback(
156156
println!("session info: {:?}", info);
157157

158158
if let Ok(sessioninfo) = convert_session_info(&info) {
159-
cppcallback.onConnected(sessioninfo);
159+
if let Some(myref) = sessioninfo.as_ref() {
160+
cppcallback.onConnected(myref);
161+
}
160162
} else {
161163
println!("invalid session info");
162164
}
@@ -167,7 +169,9 @@ async fn do_walletconnect_set_callback(
167169
if let Some(info) = message.session {
168170
println!("session info: {:?}", info);
169171
if let Ok(sessioninfo) = convert_session_info(&info) {
170-
cppcallback.onDisconnected(sessioninfo);
172+
if let Some(myref) = sessioninfo.as_ref() {
173+
cppcallback.onDisconnected(myref);
174+
}
171175
} else {
172176
println!("invalid session info");
173177
}
@@ -178,7 +182,9 @@ async fn do_walletconnect_set_callback(
178182
if let Some(info) = &message.session {
179183
println!("session info: {:?}", info);
180184
if let Ok(sessioninfo) = convert_session_info(info) {
181-
cppcallback.onConnecting(sessioninfo);
185+
if let Some(myref) = sessioninfo.as_ref() {
186+
cppcallback.onConnecting(myref);
187+
}
182188
} else {
183189
println!("invalid session info");
184190
}
@@ -188,8 +194,11 @@ async fn do_walletconnect_set_callback(
188194
println!("Updated");
189195
if let Some(info) = &message.session {
190196
println!("session info: {:?}", info);
197+
191198
if let Ok(sessioninfo) = convert_session_info(info) {
192-
cppcallback.onUpdated(sessioninfo);
199+
if let Some(myref) = sessioninfo.as_ref() {
200+
cppcallback.onUpdated(myref);
201+
}
193202
} else {
194203
println!("invalid session info");
195204
}

extra-cpp-bindings/src/walletconnectcallback.cc

Lines changed: 46 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,54 +11,44 @@ std::unique_ptr<WalletConnectSessionInfo> new_walletconnect_sessioninfo() {
1111
return std::make_unique<WalletConnectSessionInfo>();
1212
}
1313

14-
void WalletConnectSessionInfo::set_connected(bool myconnected)
15-
{
16-
connected=myconnected;
14+
void WalletConnectSessionInfo::set_connected(bool myconnected) {
15+
connected = myconnected;
1716
}
1817

19-
void WalletConnectSessionInfo::set_chainid(rust::String mychainid)
20-
{
21-
chain_id=mychainid;
18+
void WalletConnectSessionInfo::set_chainid(rust::String mychainid) {
19+
chain_id = mychainid;
2220
}
2321

24-
void WalletConnectSessionInfo::set_accounts(rust::Vec<rust::String> myaccounts)
25-
{
26-
accounts=myaccounts;
22+
void WalletConnectSessionInfo::set_accounts(
23+
rust::Vec<rust::String> myaccounts) {
24+
accounts = myaccounts;
2725
}
2826

29-
void WalletConnectSessionInfo::set_bridge(rust::String mybridge)
30-
{
31-
bridge=mybridge;
27+
void WalletConnectSessionInfo::set_bridge(rust::String mybridge) {
28+
bridge = mybridge;
3229
}
3330

34-
void WalletConnectSessionInfo::set_key(rust::String mykey)
35-
{
36-
key=mykey;
37-
}
31+
void WalletConnectSessionInfo::set_key(rust::String mykey) { key = mykey; }
3832

39-
void WalletConnectSessionInfo::set_clientid(rust::String myclient_id)
40-
{
41-
client_id=myclient_id;
33+
void WalletConnectSessionInfo::set_clientid(rust::String myclient_id) {
34+
client_id = myclient_id;
4235
}
4336

44-
void WalletConnectSessionInfo::set_clientmeta(rust::String myclient_meta)
45-
{
46-
client_meta=myclient_meta;
37+
void WalletConnectSessionInfo::set_clientmeta(rust::String myclient_meta) {
38+
client_meta = myclient_meta;
4739
}
4840

49-
void WalletConnectSessionInfo::set_peerid(rust::String mypeer_id)
50-
{
51-
peer_id=mypeer_id;
41+
void WalletConnectSessionInfo::set_peerid(rust::String mypeer_id) {
42+
peer_id = mypeer_id;
5243
}
5344

54-
void WalletConnectSessionInfo::set_peermeta(rust::String mypeer_meta)
55-
{
56-
peer_meta=mypeer_meta;
45+
void WalletConnectSessionInfo::set_peermeta(rust::String mypeer_meta) {
46+
peer_meta = mypeer_meta;
5747
}
5848

59-
void WalletConnectSessionInfo::set_handshaketopic(rust::String myhandshake_topic)
60-
{
61-
handshake_topic=myhandshake_topic;
49+
void WalletConnectSessionInfo::set_handshaketopic(
50+
rust::String myhandshake_topic) {
51+
handshake_topic = myhandshake_topic;
6252
}
6353

6454
WalletConnectCallback::WalletConnectCallback() {
@@ -67,41 +57,42 @@ WalletConnectCallback::WalletConnectCallback() {
6757

6858
WalletConnectCallback::~WalletConnectCallback() {}
6959

70-
void print_session(std::unique_ptr<WalletConnectSessionInfo>& sessioninfo)
71-
{
72-
// print sessioninfo
73-
std::cout << "connected: " << sessioninfo->connected << std::endl;
74-
std::cout << "chain_id: " << sessioninfo->chain_id << std::endl;
75-
// iterate over accounts
76-
for (auto& account : sessioninfo->accounts) {
77-
std::cout << "account: " << account << std::endl;
78-
}
79-
std::cout << "bridge: " << sessioninfo->bridge << std::endl;
80-
std::cout << "client_id: " << sessioninfo->client_id << std::endl;
81-
std::cout << "client_meta: " << sessioninfo->client_meta << std::endl;
82-
std::cout << "peer_id: " << sessioninfo->peer_id << std::endl;
83-
std::cout << "peer_meta: " << sessioninfo->peer_meta << std::endl;
84-
std::cout << "handshake_topic: " << sessioninfo->handshake_topic << std::endl;
85-
86-
}
87-
void WalletConnectCallback::onConnected(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const {
88-
std::cout << "c++ onConnected" << std::endl;
60+
void print_session(const WalletConnectSessionInfo &sessioninfo) {
61+
// print sessioninfo
62+
std::cout << "connected: " << sessioninfo.connected << std::endl;
63+
std::cout << "chain_id: " << sessioninfo.chain_id << std::endl;
64+
// iterate over accounts
65+
for (auto &account : sessioninfo.accounts) {
66+
std::cout << "account: " << account << std::endl;
67+
}
68+
std::cout << "bridge: " << sessioninfo.bridge << std::endl;
69+
std::cout << "client_id: " << sessioninfo.client_id << std::endl;
70+
std::cout << "client_meta: " << sessioninfo.client_meta << std::endl;
71+
std::cout << "peer_id: " << sessioninfo.peer_id << std::endl;
72+
std::cout << "peer_meta: " << sessioninfo.peer_meta << std::endl;
73+
std::cout << "handshake_topic: " << sessioninfo.handshake_topic << std::endl;
74+
}
75+
void WalletConnectCallback::onConnected(
76+
const WalletConnectSessionInfo &sessioninfo) const {
77+
std::cout << "c++ onConnected" << std::endl;
8978
print_session(sessioninfo);
9079
}
91-
void WalletConnectCallback::onDisconnected(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const {
80+
void WalletConnectCallback::onDisconnected(
81+
const WalletConnectSessionInfo &sessioninfo) const {
9282
std::cout << "c++ onDisconnected" << std::endl;
9383
print_session(sessioninfo);
9484
}
95-
void WalletConnectCallback::onConnecting(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const {
85+
void WalletConnectCallback::onConnecting(
86+
const WalletConnectSessionInfo &sessioninfo) const {
9687
std::cout << "c++ onConnecting" << std::endl;
9788
print_session(sessioninfo);
9889
}
99-
void WalletConnectCallback::onUpdated(std::unique_ptr<WalletConnectSessionInfo> sessioninfo) const {
100-
std::cout << "c++ onUpdated" << std::endl;
90+
void WalletConnectCallback::onUpdated(
91+
const WalletConnectSessionInfo &sessioninfo) const {
92+
std::cout << "c++ onUpdated" << std::endl;
10193
print_session(sessioninfo);
10294
}
10395

104-
10596
} // namespace game_sdk
10697
} // namespace crypto
10798
} // namespace com

0 commit comments

Comments
 (0)