Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit dd3f997

Browse files
authored
Merge pull request #5 from iotaledger/add_mac_arm
fix: release workflow, error handling, mac arm, listen_wallet
2 parents c4133b6 + adcd7d3 commit dd3f997

File tree

3 files changed

+38
-19
lines changed

3 files changed

+38
-19
lines changed

.github/workflows/bindings-native-publish.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
os: [macos-13, ubuntu-20.04, windows-2022]
16+
os: [macos-13, macos-13-xlarge, ubuntu-20.04, windows-2022]
1717

1818
steps:
1919
- uses: actions/checkout@v3
@@ -24,7 +24,7 @@ jobs:
2424
2525
- name: Select Xcode
2626
uses: maxim-lobanov/setup-xcode@v1
27-
if: matrix.os == 'macos-13'
27+
if: matrix.os == 'macos-13' || matrix.os == 'macos-13-xlarge'
2828
with:
2929
xcode-version: '14.3'
3030

@@ -47,11 +47,11 @@ jobs:
4747

4848
- name: Set deployment target (macOS)
4949
run: echo "MACOSX_DEPLOYMENT_TARGET=10.14" >> $GITHUB_ENV
50-
if: matrix.os == 'macos-13'
50+
if: matrix.os == 'macos-13' || matrix.os == 'macos-13-xlarge'
5151

5252
- name: Get current date
5353
run: echo "CURRENT_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
54-
if: matrix.os == 'macos-13' || ${{ startsWith(matrix.os, 'ubuntu') }}
54+
if: matrix.os == 'macos-13' || matrix.os == 'macos-13-xlarge' || ${{ startsWith(matrix.os, 'ubuntu') }}
5555

5656
- name: Get current date
5757
if: matrix.os == 'windows-2022'
@@ -94,6 +94,14 @@ jobs:
9494
9595
- name: Cargo build
9696
run: cargo build --release
97+
98+
- name: Rename file (MacOS/arm64)
99+
run: mv target/release/libiota_sdk.dylib target/release/libiota_sdk_arm64.dylib
100+
if: matrix.os == 'macos-13-xlarge'
101+
102+
- name: Rename file (MacOS/amd64)
103+
run: mv target/release/libiota_sdk.dylib target/release/libiota_sdk_amd64.dylib
104+
if: matrix.os == 'macos-13'
97105

98106
- name: Upload package to Github release
99107
uses: softprops/action-gh-release@v1
@@ -102,6 +110,8 @@ jobs:
102110
files: |
103111
target/release/libiota_sdk.so
104112
target/release/iota_sdk.dll
105-
target/release/libiota_sdk.dylib
113+
target/release/libiota_sdk_arm64.dylib
114+
target/release/libiota_sdk_amd64.dylib
115+
106116
fail_on_unmatched_files: false
107117
tag_name: ${{ steps.prepare_release.outputs.tag_name }}

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "iota-sdk-native-bindings"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
authors = [ "IOTA Stiftung" ]
55
edition = "2021"
66
description = "Native wrapper for the IOTA SDK library"
@@ -22,7 +22,7 @@ default = ["std"]
2222
std = ["zeroize/std"]
2323

2424
[dependencies]
25-
iota-sdk-bindings-core = { git = "https://github.com/iotaledger/iota-sdk.git", rev = "8f57f0c50f555b5e62f78ebf0177fc71b78f0396", default-features = false, features = [
25+
iota-sdk-bindings-core = { git = "https://github.com/iotaledger/iota-sdk.git", branch = "develop", default-features = false, features = [
2626
"events",
2727
"rocksdb",
2828
"ledger_nano",

src/wallet.rs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -112,28 +112,34 @@ unsafe fn internal_listen_wallet(
112112
events_ptr: *const c_char,
113113
handler: extern "C" fn(*const c_char),
114114
) -> Result<bool> {
115+
log::debug!("ON LISTEN WALLET BEGIN");
116+
115117
let wallet = {
116118
assert!(!wallet_ptr.is_null());
117119
&mut *wallet_ptr
118120
};
119121

120122
let events_string = CStr::from_ptr(events_ptr).to_str().unwrap();
121-
let rust_events = serde_json::from_str::<Vec<String>>(events_string);
123+
let rust_events = serde_json::from_str::<Vec<u8>>(events_string);
122124

123125
if rust_events.is_err() {
124-
return Ok(false);
126+
return Err(Error {error: rust_events.unwrap_err().to_string() });
125127
}
126128

127-
let mut wallet_events: Vec<WalletEventType> = Vec::new();
128-
for event in rust_events.unwrap() {
129-
let event = match serde_json::from_str::<WalletEventType>(&event) {
130-
Ok(event) => event,
129+
let rust_events_unwrapped = rust_events.unwrap();
130+
log::debug!("ON LISTEN WALLET");
131+
132+
let mut event_types: Vec<WalletEventType> = Vec::with_capacity(rust_events_unwrapped.len());
133+
for event_id in rust_events_unwrapped {
134+
let wallet_event_type =
135+
WalletEventType::try_from(event_id);
136+
137+
match wallet_event_type {
138+
Ok(event) => event_types.push(event),
131139
Err(e) => {
132-
debug!("Wrong event to listen! {e:?}");
133-
return Ok(false);
140+
return Err(Error { error: e });
134141
}
135-
};
136-
wallet_events.push(event);
142+
}
137143
}
138144

139145
crate::block_on(async {
@@ -143,13 +149,16 @@ unsafe fn internal_listen_wallet(
143149
.await
144150
.as_ref()
145151
.expect("wallet got destroyed")
146-
.listen(wallet_events, move |event_data| {
152+
.listen(event_types, move |event_data| {
147153
if let Ok(event_str) = serde_json::to_string(event_data) {
148154
let s = CString::new(event_str).unwrap();
155+
156+
log::debug!("Calling handler");
157+
149158
handler(s.into_raw())
150159
}
151160
})
152-
.await
161+
.await;
153162
});
154163

155164
Ok(true)

0 commit comments

Comments
 (0)