UNPKG

migme-ferry

Version:

Ferry transports packets to and from fusion/fission

111 lines (89 loc) 3.91 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _packetFields = require('./packet-fields'); var _packetFields2 = _interopRequireDefault(_packetFields); var _transactions = require('../data/transactions'); var _transactions2 = _interopRequireDefault(_transactions); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Packet = function () { function Packet() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var fields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; _classCallCheck(this, Packet); this.type = type; this.transactionId = _transactions2.default.getNextTransactionId(); this.createTime = Date.now(); this.sentTime = null; this.retryCount = 0; this.setFields(fields); } _createClass(Packet, [{ key: 'setSentTime', value: function setSentTime(timestamp) { this.sentTime = timestamp; } }, { key: 'updateRetryCount', value: function updateRetryCount() { this.retryCount += 1; } }, { key: 'setFields', value: function setFields() { var _this = this; var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.fields = Object.keys(fields).map(function (key) { if (_packetFields2.default[_this.type].hasOwnProperty(key) && fields[key] !== null && typeof fields[key] !== 'undefined') { return _defineProperty({}, key, fields[key]); } return null; }).filter(function (i) { return i !== null; }).reduce(function (l, c) { return Object.assign({}, l, c); }, {}); return this; } }, { key: 'fromJSON', value: function fromJSON(json) { var _this2 = this; this.type = parseInt(json.T, 10) || 0; this.transactionId = parseInt(json.I, 10) || 1; this.fields = json.F ? Object.keys(json.F).map(function (key) { var fields = _packetFields2.default[_this2.type]; var fieldName = Object.keys(fields).find(function (field) { return fields[field] === parseInt(key, 10); }); return _defineProperty({}, fieldName, json.F[key]); }).reduce(function (l, c) { return Object.assign({}, l, c); }, {}) : {}; return this; } }, { key: 'toJSON', value: function toJSON() { var _this3 = this; var json = {}; json.T = this.type; json.I = this.transactionId; if (Object.keys(this.fields).length) { json.F = Object.keys(this.fields).map(function (key) { return _defineProperty({}, _packetFields2.default[_this3.type][key], _this3.fields[key]); }).reduce(function (l, c) { return Object.assign({}, l, c); }, {}); } return json; } }]); return Packet; }(); exports.default = Packet; module.exports = exports['default'];