itns-sidechain/lib/workers/framer.js

49 lines
758 B
JavaScript
Raw Normal View History

2016-10-02 01:01:16 -07:00
/*!
* workers.js - worker processes for bcoin
* Copyright (c) 2014-2015, Fedor Indutny (MIT License)
2017-02-03 22:47:26 -08:00
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
2016-10-02 01:01:16 -07:00
* https://github.com/bcoin-org/bcoin
*/
'use strict';
2017-11-16 11:43:24 -08:00
const bio = require('bufio');
2016-10-02 01:01:16 -07:00
/**
* Framer
2017-02-03 22:47:26 -08:00
* @alias module:workers.Framer
2016-10-02 01:01:16 -07:00
*/
2017-11-16 20:26:28 -08:00
class Framer {
/**
* Create a framer.
* @constructor
*/
constructor() {}
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
packet(payload) {
const size = 10 + payload.getSize();
const bw = bio.write(size);
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
bw.writeU32(payload.id);
bw.writeU8(payload.cmd);
bw.seek(4);
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
payload.toWriter(bw);
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
bw.writeU8(0x0a);
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
const msg = bw.render();
msg.writeUInt32LE(msg.length - 10, 5, true);
2016-10-02 01:01:16 -07:00
2017-11-16 20:26:28 -08:00
return msg;
}
}
2016-10-02 01:01:16 -07:00
/*
* Expose
*/
module.exports = Framer;