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 Block = require('../primitives/block');
|
||||||
var MTX = require('../primitives/mtx');
|
var MTX = require('../primitives/mtx');
|
||||||
var TX = require('../primitives/tx');
|
var TX = require('../primitives/tx');
|
||||||
var Coin = require('../primitives/coin');
|
|
||||||
var KeyRing = require('../primitives/keyring');
|
var KeyRing = require('../primitives/keyring');
|
||||||
var Script = require('../script/script');
|
var Script = require('../script/script');
|
||||||
var Witness = require('../script/witness');
|
var Witness = require('../script/witness');
|
||||||
var HD = require('../hd/hd');
|
|
||||||
var MinerBlock = require('../miner/minerblock');
|
var MinerBlock = require('../miner/minerblock');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,53 +77,47 @@ Framer.item = function _item(item, writer) {
|
|||||||
case 'undefined':
|
case 'undefined':
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
p.writeU8(0);
|
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 {
|
} else {
|
||||||
if (item instanceof Block) {
|
keys = Object.keys(item);
|
||||||
p.writeU8(40);
|
p.writeU8(6);
|
||||||
item.toRaw(p);
|
p.writeVarint(keys.length);
|
||||||
} else if (item instanceof MTX) {
|
for (i = 0; i < keys.length; i++) {
|
||||||
p.writeU8(46);
|
p.writeVarString(keys[i], 'utf8');
|
||||||
item.toExtended(true, p);
|
Framer.item(item[keys[i]], 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -15,11 +15,9 @@ var BufferReader = require('../utils/reader');
|
|||||||
var Block = require('../primitives/block');
|
var Block = require('../primitives/block');
|
||||||
var MTX = require('../primitives/mtx');
|
var MTX = require('../primitives/mtx');
|
||||||
var TX = require('../primitives/tx');
|
var TX = require('../primitives/tx');
|
||||||
var Coin = require('../primitives/coin');
|
|
||||||
var KeyRing = require('../primitives/keyring');
|
var KeyRing = require('../primitives/keyring');
|
||||||
var Script = require('../script/script');
|
var Script = require('../script/script');
|
||||||
var Witness = require('../script/witness');
|
var Witness = require('../script/witness');
|
||||||
var HD = require('../hd/hd');
|
|
||||||
var MinerBlock = require('../miner/minerblock');
|
var MinerBlock = require('../miner/minerblock');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -184,23 +182,19 @@ Parser.parseItem = function parseItem(data) {
|
|||||||
case 10:
|
case 10:
|
||||||
return new bn(p.readVarBytes());
|
return new bn(p.readVarBytes());
|
||||||
case 40:
|
case 40:
|
||||||
return Block.fromRaw(p);
|
return Script.fromRaw(p.readVarBytes());
|
||||||
case 41:
|
case 41:
|
||||||
return TX.fromExtended(p, true);
|
return Witness.fromRaw(p);
|
||||||
case 42:
|
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:
|
case 45:
|
||||||
return MinerBlock.fromRaw(p);
|
return MinerBlock.fromRaw(p);
|
||||||
case 46:
|
case 46:
|
||||||
return MTX.fromExtended(p, true);
|
|
||||||
case 47:
|
|
||||||
return KeyRing.fromRaw(p);
|
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:
|
default:
|
||||||
throw new Error('Bad type.');
|
throw new Error('Bad type.');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -221,12 +221,17 @@ Workers.prototype.execute = function execute(method, args, timeout) {
|
|||||||
var result, child;
|
var result, child;
|
||||||
|
|
||||||
if (!Workers.enabled) {
|
if (!Workers.enabled) {
|
||||||
try {
|
return new Promise(function(resolve, reject) {
|
||||||
result = jobs[method].apply(jobs, args);
|
utils.nextTick(function() {
|
||||||
} catch (e) {
|
try {
|
||||||
return Promise.reject(e);
|
result = jobs[method].apply(jobs, args);
|
||||||
}
|
} catch (e) {
|
||||||
return Promise.resolve(result);
|
reject(e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!timeout)
|
if (!timeout)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user