workers: refactor framer and parser.
This commit is contained in:
parent
02ccde4f8a
commit
0e8f4712e3
@ -15,11 +15,9 @@ var BufferWriter = require('../utils/writer');
|
||||
var Block = require('../primitives/block');
|
||||
var MTX = require('../primitives/mtx');
|
||||
var TX = require('../primitives/tx');
|
||||
var Coin = require('../primitives/coin');
|
||||
var KeyRing = require('../primitives/keyring');
|
||||
var Script = require('../script/script');
|
||||
var Witness = require('../script/witness');
|
||||
var HD = require('../hd/hd');
|
||||
var MinerBlock = require('../miner/minerblock');
|
||||
|
||||
/**
|
||||
@ -79,53 +77,47 @@ Framer.item = function _item(item, writer) {
|
||||
case 'undefined':
|
||||
if (item == null) {
|
||||
p.writeU8(0);
|
||||
break;
|
||||
}
|
||||
if (item instanceof Script) {
|
||||
p.writeU8(40);
|
||||
p.writeVarBytes(item.toRaw());
|
||||
} else if (item instanceof Witness) {
|
||||
p.writeU8(41);
|
||||
item.toRaw(p);
|
||||
} else if (item instanceof MTX) {
|
||||
p.writeU8(42);
|
||||
item.toExtended(true, p);
|
||||
} else if (item instanceof TX) {
|
||||
p.writeU8(43);
|
||||
item.toExtended(true, p);
|
||||
} else if (item instanceof Block) {
|
||||
p.writeU8(44);
|
||||
item.toRaw(p);
|
||||
} else if (item instanceof MinerBlock) {
|
||||
p.writeU8(45);
|
||||
item.toRaw(p);
|
||||
} else if (item instanceof KeyRing) {
|
||||
p.writeU8(46);
|
||||
item.toRaw(p);
|
||||
} else if (bn.isBN(item)) {
|
||||
p.writeU8(10);
|
||||
p.writeVarBytes(item.toArrayLike(Buffer));
|
||||
} else if (Buffer.isBuffer(item)) {
|
||||
p.writeU8(4);
|
||||
p.writeVarBytes(item);
|
||||
} else if (Array.isArray(item)) {
|
||||
p.writeU8(5);
|
||||
p.writeVarint(item.length);
|
||||
for (i = 0; i < item.length; i++)
|
||||
Framer.item(item[i], p);
|
||||
} else {
|
||||
if (item instanceof Block) {
|
||||
p.writeU8(40);
|
||||
item.toRaw(p);
|
||||
} else if (item instanceof MTX) {
|
||||
p.writeU8(46);
|
||||
item.toExtended(true, p);
|
||||
} else if (item instanceof TX) {
|
||||
p.writeU8(41);
|
||||
item.toExtended(true, p);
|
||||
} else if (item instanceof Coin) {
|
||||
p.writeU8(42);
|
||||
item.toExtended(p);
|
||||
} else if (item instanceof MinerBlock) {
|
||||
p.writeU8(45);
|
||||
item.toRaw(p);
|
||||
} else if (item instanceof KeyRing) {
|
||||
p.writeU8(47);
|
||||
item.toRaw(p);
|
||||
} else if (HD.isHD(item)) {
|
||||
p.writeU8(48);
|
||||
p.writeBytes(item.toRaw());
|
||||
} else if (item instanceof Script) {
|
||||
p.writeU8(49);
|
||||
p.writeVarBytes(item.toRaw());
|
||||
} else if (item instanceof Witness) {
|
||||
p.writeU8(50);
|
||||
item.toRaw(p);
|
||||
} else if (bn.isBN(item)) {
|
||||
p.writeU8(10);
|
||||
p.writeVarBytes(item.toArrayLike(Buffer));
|
||||
} else if (Buffer.isBuffer(item)) {
|
||||
p.writeU8(4);
|
||||
p.writeVarBytes(item);
|
||||
} else if (Array.isArray(item)) {
|
||||
p.writeU8(5);
|
||||
p.writeVarint(item.length);
|
||||
for (i = 0; i < item.length; i++)
|
||||
Framer.item(item[i], p);
|
||||
} else {
|
||||
keys = Object.keys(item);
|
||||
p.writeU8(6);
|
||||
p.writeVarint(keys.length);
|
||||
for (i = 0; i < keys.length; i++) {
|
||||
p.writeVarString(keys[i], 'utf8');
|
||||
Framer.item(item[keys[i]], p);
|
||||
}
|
||||
keys = Object.keys(item);
|
||||
p.writeU8(6);
|
||||
p.writeVarint(keys.length);
|
||||
for (i = 0; i < keys.length; i++) {
|
||||
p.writeVarString(keys[i], 'utf8');
|
||||
Framer.item(item[keys[i]], p);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -15,11 +15,9 @@ var BufferReader = require('../utils/reader');
|
||||
var Block = require('../primitives/block');
|
||||
var MTX = require('../primitives/mtx');
|
||||
var TX = require('../primitives/tx');
|
||||
var Coin = require('../primitives/coin');
|
||||
var KeyRing = require('../primitives/keyring');
|
||||
var Script = require('../script/script');
|
||||
var Witness = require('../script/witness');
|
||||
var HD = require('../hd/hd');
|
||||
var MinerBlock = require('../miner/minerblock');
|
||||
|
||||
/**
|
||||
@ -184,23 +182,19 @@ Parser.parseItem = function parseItem(data) {
|
||||
case 10:
|
||||
return new bn(p.readVarBytes());
|
||||
case 40:
|
||||
return Block.fromRaw(p);
|
||||
return Script.fromRaw(p.readVarBytes());
|
||||
case 41:
|
||||
return TX.fromExtended(p, true);
|
||||
return Witness.fromRaw(p);
|
||||
case 42:
|
||||
return Coin.fromExtended(p);
|
||||
return MTX.fromExtended(p, true);
|
||||
case 43:
|
||||
return TX.fromExtended(p, true);
|
||||
case 44:
|
||||
return Block.fromRaw(p);
|
||||
case 45:
|
||||
return MinerBlock.fromRaw(p);
|
||||
case 46:
|
||||
return MTX.fromExtended(p, true);
|
||||
case 47:
|
||||
return KeyRing.fromRaw(p);
|
||||
case 48:
|
||||
return HD.fromRaw(p.readBytes(82));
|
||||
case 49:
|
||||
return Script.fromRaw(p.readVarBytes());
|
||||
case 50:
|
||||
return Witness.fromRaw(p);
|
||||
default:
|
||||
throw new Error('Bad type.');
|
||||
}
|
||||
|
||||
@ -221,12 +221,17 @@ Workers.prototype.execute = function execute(method, args, timeout) {
|
||||
var result, child;
|
||||
|
||||
if (!Workers.enabled) {
|
||||
try {
|
||||
result = jobs[method].apply(jobs, args);
|
||||
} catch (e) {
|
||||
return Promise.reject(e);
|
||||
}
|
||||
return Promise.resolve(result);
|
||||
return new Promise(function(resolve, reject) {
|
||||
utils.nextTick(function() {
|
||||
try {
|
||||
result = jobs[method].apply(jobs, args);
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
return;
|
||||
}
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (!timeout)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user