66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
/*!
|
|
* workers.js - worker processes for bcoin
|
|
* Copyright (c) 2014-2015, Fedor Indutny (MIT License)
|
|
* Copyright (c) 2014-2016, Christopher Jeffrey (MIT License).
|
|
* https://github.com/bcoin-org/bcoin
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var util = require('../utils/util');
|
|
var packets = require('./packets');
|
|
var ServerParser = require('./parser');
|
|
var MTX = require('../primitives/mtx');
|
|
var TX = require('../primitives/tx');
|
|
var KeyRing = require('../primitives/keyring');
|
|
var CoinView = require('../blockchain/coinview');
|
|
|
|
/**
|
|
* Parser
|
|
* @constructor
|
|
*/
|
|
|
|
function Parser() {
|
|
if (!(this instanceof Parser))
|
|
return new Parser();
|
|
|
|
ServerParser.call(this);
|
|
}
|
|
|
|
util.inherits(Parser, ServerParser);
|
|
|
|
Parser.prototype.parsePacket = function parsePacket(header, data) {
|
|
switch (header.cmd) {
|
|
case packets.types.EVENT:
|
|
return packets.EventPacket.fromRaw(data);
|
|
case packets.types.LOG:
|
|
return packets.LogPacket.fromRaw(data);
|
|
case packets.types.ERROR:
|
|
return packets.ErrorPacket.fromRaw(data);
|
|
case packets.types.VERIFY:
|
|
return packets.VerifyPacket.fromRaw(TX, CoinView, data);
|
|
case packets.types.SIGN:
|
|
return packets.SignPacket.fromRaw(MTX, KeyRing, data);
|
|
case packets.types.VERIFYINPUT:
|
|
return packets.VerifyInputPacket.fromRaw(TX, data);
|
|
case packets.types.SIGNINPUT:
|
|
return packets.SignInputPacket.fromRaw(MTX, KeyRing, data);
|
|
case packets.types.ECVERIFY:
|
|
return packets.ECVerifyPacket.fromRaw(data);
|
|
case packets.types.ECSIGN:
|
|
return packets.ECSignPacket.fromRaw(data);
|
|
case packets.types.MINE:
|
|
return packets.MinePacket.fromRaw(data);
|
|
case packets.types.SCRYPT:
|
|
return packets.ScryptPacket.fromRaw(data);
|
|
default:
|
|
throw new Error('Unknown packet.');
|
|
}
|
|
};
|
|
|
|
/*
|
|
* Expose
|
|
*/
|
|
|
|
module.exports = Parser;
|