swtc-lib
Version:
websocket access for jingtum blockchain
52 lines • 1.82 kB
JavaScript
import { EventEmitter } from "events";
import { utils } from "@swtc/utils";
class OrderBook extends EventEmitter {
constructor(remote) {
super();
this._remote = remote;
this._books = {};
this._token = remote._token || "swt";
this.on("newListener", function (key, listener) {
if (key === "removeListener")
return;
const pair = utils.parseKey(key);
if (!pair) {
this.pair = new Error("invalid key");
return this;
}
this._books[key] = listener;
});
this.on("removeListener", function (key) {
const pair = utils.parseKey(key);
if (!pair) {
this.pair = new Error("invalid key");
return this;
}
delete this._books[key];
});
this._remote.on("transactions", this.__updateBooks.bind(this));
}
__updateBooks(data) {
if (data.meta) {
const books = utils.affectedBooks(data);
const _data = {
tx: data.transaction,
meta: data.meta,
engine_result: data.engine_result,
engine_result_code: data.engine_result_code,
engine_result_message: data.engine_result_message,
ledger_hash: data.ledger_hash,
ledger_index: data.ledger_index,
validated: data.validated
};
const _tx = utils.processTx(_data, data.transaction.Account);
for (const book of books) {
const callback = this._books[books[book]];
if (callback)
callback(_tx);
}
}
}
}
export { OrderBook };
//# sourceMappingURL=orderbook.js.map