Skip to content

Commit a2802e9

Browse files
committed
chore: polishing JS api, plumbing events
1 parent 43a23fd commit a2802e9

File tree

4 files changed

+39
-31
lines changed

4 files changed

+39
-31
lines changed

node-bindings/lib/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
"use strict";
22

33
const { promisify } = require("util");
4-
const { stackDevnetNew, stackDevnetStart, stackDevnetOnStacksBlock, stackDevnetOnBitcoinBlock, stackDevnetTerminate } = require('../native/index.node');
4+
const { stacksDevnetNew, stacksDevnetStart, stacksDevnetStop, stacksDevnetWaitForStacksBlock, stacksDevnetWaitForBitcoinBlock } = require('../native/index.node');
55

66
class StacksDevnet {
77

88
constructor() {
9-
this.handle = stackDevnetNew();
9+
this.handle = stacksDevnetNew();
1010
}
1111

1212
start() {
13-
return stackDevnetStart.call(this.handle);
13+
return stacksDevnetStart.call(this.handle);
1414
}
1515

1616
waitForBootCompletion(callback) {
@@ -20,18 +20,18 @@ class StacksDevnet {
2020
}
2121

2222
waitForStacksBlock(callback) {
23-
return stackDevnetOnStacksBlock.call(this.handle, callback);
23+
return stacksDevnetWaitForStacksBlock.call(this.handle, callback);
2424
}
2525

2626
waitForBitcoinBlock(callback) {
27-
return stackDevnetOnBitcoinBlock.call(this.handle, callback);
27+
return stacksDevnetWaitForBitcoinBlock.call(this.handle, callback);
2828
}
2929

3030
waitForAttachment(callback) {
3131
}
3232

3333
stop() {
34-
stackDevnetTerminate.call(this.handle);
34+
stacksDevnetStop.call(this.handle);
3535
}
3636
}
3737

node-bindings/src/lib.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ impl StacksDevnet {
107107
Ok(cx.undefined())
108108
}
109109

110-
fn js_terminate(mut cx: FunctionContext) -> JsResult<JsUndefined> {
110+
fn js_stop(mut cx: FunctionContext) -> JsResult<JsUndefined> {
111111
cx.this()
112112
.downcast_or_throw::<JsBox<StacksDevnet>, _>(&mut cx)?
113113
.stop(None)
@@ -127,15 +127,18 @@ impl StacksDevnet {
127127

128128
while let Ok(message) = devnet.devnet_event_rx.recv() {
129129
match message {
130-
_ => {
131-
println!("Hello world :)");
130+
NodeObserverEvent::NewStacksBlock => {
131+
println!("New stacks block");
132132
let args: Vec<Handle<JsValue>> =
133133
vec![cx.null().upcast(), cx.number(1 as f64).upcast()];
134134
let _res = callback.call(&mut cx, devnet, args)?;
135135
// let expected = cx.boolean(true);
136136
// if res.strict_equals(&mut cx, expected) {
137137
// break;
138138
// }
139+
break;
140+
}
141+
_ => {
139142
}
140143
}
141144
}
@@ -153,24 +156,18 @@ impl StacksDevnet {
153156

154157
while let Ok(message) = devnet.devnet_event_rx.recv() {
155158
match message {
156-
_ => {
157-
println!("Hello world :)");
158-
// let this = cx.undefined();
159+
NodeObserverEvent::NewBitcoinBlock => {
160+
println!("New bitcoin block");
159161
let args: Vec<Handle<JsValue>> =
160162
vec![cx.null().upcast(), cx.number(1 as f64).upcast()];
161163
let _res = callback.call(&mut cx, devnet, args)?;
162-
break;
163-
// // callback.call(&mut cx, this, vec![])?;
164-
165-
// }
166-
// DevnetMessage::Callback(f) => {
167-
// // The connection and channel are owned by the thread, but _lent_ to
168-
// // the callback. The callback has exclusive access to the connection
169-
// // for the duration of the callback.
170-
// f(&channel);
164+
// let expected = cx.boolean(true);
165+
// if res.strict_equals(&mut cx, expected) {
166+
// break;
171167
// }
172-
// // Immediately close the connection, even if there are pending messages
173-
// DevnetMessage::Close => break,
168+
break;
169+
}
170+
_ => {
174171
}
175172
}
176173
}
@@ -181,14 +178,14 @@ impl StacksDevnet {
181178

182179
#[neon::main]
183180
fn main(mut cx: ModuleContext) -> NeonResult<()> {
184-
cx.export_function("stackDevnetNew", StacksDevnet::js_new)?;
185-
cx.export_function("stackDevnetStart", StacksDevnet::js_start)?;
186-
cx.export_function("stackDevnetOnStacksBlock", StacksDevnet::js_on_stacks_block)?;
181+
cx.export_function("stacksDevnetNew", StacksDevnet::js_new)?;
182+
cx.export_function("stacksDevnetStart", StacksDevnet::js_start)?;
183+
cx.export_function("stacksDevnetStop", StacksDevnet::js_stop)?;
184+
cx.export_function("stacksDevnetWaitForStacksBlock", StacksDevnet::js_on_stacks_block)?;
187185
cx.export_function(
188-
"stackDevnetOnBitcoinBlock",
186+
"stacksDevnetWaitForBitcoinBlock",
189187
StacksDevnet::js_on_bitcoin_block,
190188
)?;
191-
cx.export_function("stackDevnetTerminate", StacksDevnet::js_terminate)?;
192189
Ok(())
193190
}
194191

src/integrate/events_observer.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ pub fn handle_new_burn_block(
279279
match node_event_tx.lock() {
280280
Ok(tx) => {
281281
if let Some(ref tx) = *tx {
282-
tx.send(NodeObserverEvent::NewBlock)
282+
tx.send(NodeObserverEvent::NewBitcoinBlock)
283283
.expect("Unable to broadcast event");
284284
}
285285
}
@@ -297,8 +297,18 @@ pub fn handle_new_block(
297297
config: &State<Arc<RwLock<EventObserverConfig>>>,
298298
devnet_events_tx: &State<Arc<Mutex<Sender<DevnetEvent>>>>,
299299
new_block: Json<NewBlock>,
300-
_node_event_tx: &State<Arc<Mutex<Option<Sender<NodeObserverEvent>>>>>,
300+
node_event_tx: &State<Arc<Mutex<Option<Sender<NodeObserverEvent>>>>>,
301301
) -> Json<Value> {
302+
match node_event_tx.lock() {
303+
Ok(tx) => {
304+
if let Some(ref tx) = *tx {
305+
tx.send(NodeObserverEvent::NewStacksBlock)
306+
.expect("Unable to broadcast event");
307+
}
308+
}
309+
_ => {}
310+
};
311+
302312
let devnet_events_tx = devnet_events_tx.inner();
303313
let config = config.inner();
304314

src/integrate/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ pub use orchestrator::DevnetOrchestrator;
1515
use self::events_observer::EventObserverConfig;
1616

1717
pub enum NodeObserverEvent {
18-
NewBlock,
18+
NewStacksBlock,
19+
NewBitcoinBlock,
1920
}
2021

2122
pub fn run_devnet(

0 commit comments

Comments
 (0)