migme-ferry
Version:
Ferry transports packets to and from fusion/fission
111 lines (89 loc) • 3.91 kB
JavaScript
;
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'];