fcoin/lib/workers/framer.js
2017-07-17 14:26:37 -07:00

53 lines
969 B
JavaScript

/*!
* workers.js - worker processes for bcoin
* Copyright (c) 2014-2015, Fedor Indutny (MIT License)
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict';
const EventEmitter = require('events').EventEmitter;
const util = require('../utils/util');
const StaticWriter = require('../utils/staticwriter');
/**
* Framer
* @alias module:workers.Framer
* @constructor
*/
function Framer() {
if (!(this instanceof Framer))
return new Framer();
EventEmitter.call(this);
}
util.inherits(Framer, EventEmitter);
Framer.prototype.packet = function _packet(packet) {
let size = 10 + packet.getSize();
let bw = new StaticWriter(size);
let data;
bw.writeU32(packet.id);
bw.writeU8(packet.cmd);
bw.seek(4);
packet.toWriter(bw);
bw.writeU8(0x0a);
data = bw.render();
data.writeUInt32LE(data.length - 10, 5, true);
return data;
};
/*
* Expose
*/
module.exports = Framer;