@@ -96,6 +96,7 @@ init(Handle<Object>);
96
96
static std::vector<CDataStream> txmon_messages;
97
97
static uv_async_t txmon_async;
98
98
static Eternal<Function> txmon_callback;
99
+ static bool txmon_callback_available;
99
100
100
101
static volatile bool shutdown_complete = false ;
101
102
static char *g_data_dir = NULL ;
@@ -219,6 +220,7 @@ NAN_METHOD(StartTxMon) {
219
220
Local<Function> callback = Local<Function>::Cast (args[0 ]);
220
221
Eternal<Function> cb (isolate, callback);
221
222
txmon_callback = cb;
223
+ txmon_callback_available = true ;
222
224
223
225
CNodeSignals& nodeSignals = GetNodeSignals ();
224
226
nodeSignals.ProcessMessages .connect (&scan_messages, boost::signals2::at_front);
@@ -1499,6 +1501,32 @@ NAN_METHOD(SendTransaction) {
1499
1501
// Relay the transaction connect peers
1500
1502
RelayTransaction (tx);
1501
1503
1504
+ // Notify any listeners about the transaction
1505
+ if (txmon_callback_available) {
1506
+
1507
+ Local<Array> results = Array::New (isolate);
1508
+ Local<Object> obj = NanNew<Object>();
1509
+
1510
+ CDataStream ssTx (SER_NETWORK, PROTOCOL_VERSION);
1511
+ ssTx << tx;
1512
+ std::string stx = ssTx.str ();
1513
+ Local<Value> txBuffer = node::Buffer::New (isolate, stx.c_str (), stx.size ());
1514
+
1515
+ obj->Set (NanNew<String>(" buffer" ), txBuffer);
1516
+ obj->Set (NanNew<String>(" hash" ), NanNew<String>(hashTx.GetHex ()));
1517
+ obj->Set (NanNew<String>(" mempool" ), NanNew<Boolean>(true ));
1518
+
1519
+ results->Set (0 , obj);
1520
+
1521
+ const unsigned argc = 1 ;
1522
+ Local<Value> argv[argc] = {
1523
+ Local<Value>::New (isolate, results)
1524
+ };
1525
+ Local<Function> cb = txmon_callback.Get (isolate);
1526
+
1527
+ cb->Call (isolate->GetCurrentContext ()->Global (), argc, argv);
1528
+ }
1529
+
1502
1530
NanReturnValue (Local<Value>::New (isolate, NanNew<String>(hashTx.GetHex ())));
1503
1531
}
1504
1532
0 commit comments