122 lines
3.6 KiB
JavaScript
122 lines
3.6 KiB
JavaScript
"use strict";
|
|
var Object = require("./object");
|
|
var Uint64 = require("./uint64");
|
|
var Address = require("./address");
|
|
var Boolean = require("./boolean");
|
|
|
|
var Event = Object.inherit({
|
|
"className": "Event",
|
|
"constructor": function(addr, object, isSystem) {
|
|
Object.fn.constructor.call(this);
|
|
|
|
if (!(object instanceof Object) && object !== undefined) {
|
|
throw new Error("Wrong arguments to construct Event");
|
|
}
|
|
if (!(addr instanceof Address) && addr !== undefined) {
|
|
throw new Error("Wrong arguments to construct Event");
|
|
}
|
|
|
|
this._destination = addr !== undefined ? addr : new Address();
|
|
this._data = object !== undefined ? object : new Object();
|
|
this._senderId = new Uint64();
|
|
this._system = new Boolean(isSystem);
|
|
},
|
|
"destructor": function() {
|
|
this.clear();
|
|
|
|
Object.fn.destructor.call(this);
|
|
},
|
|
"==": function(other) {
|
|
if (this.getType() !== other.getType()) {
|
|
return false;
|
|
}
|
|
return this._destination["=="](other._destination) &&
|
|
this._system["=="](other._system) &&
|
|
this._senderId["=="](other._senderId) &&
|
|
this._data["=="](other._data)
|
|
},
|
|
"clear": function() {
|
|
this._system.destructor();
|
|
this._destination.destructor();
|
|
this._senderId.destructor();
|
|
this._data.destructor();
|
|
},
|
|
"clone": function() {
|
|
var clone = new Event();
|
|
|
|
clone._destination = this._destination.clone();
|
|
clone._data = this._data.clone();
|
|
clone._senderId = this._senderId.clone();
|
|
clone._system = this._system.clone();
|
|
|
|
return clone;
|
|
},
|
|
"deserialize": function(ba) {
|
|
this._system = new Boolean();
|
|
this._system.deserialize(ba);
|
|
|
|
if (!this.isSystem()) {
|
|
this._destination = new Address();
|
|
this._destination.deserialize(ba);
|
|
|
|
this._senderId = new Uint64();
|
|
this._senderId.deserialize(ba);
|
|
}
|
|
|
|
this._data = Object.fromByteArray(ba);
|
|
},
|
|
"getData": function() {
|
|
return this._data;
|
|
},
|
|
"getDestination": function() {
|
|
return this._destination;
|
|
},
|
|
"getSenderId": function() {
|
|
return this._senderId;
|
|
},
|
|
"isSystem": function() {
|
|
return this._system.valueOf();
|
|
},
|
|
"length": function() {
|
|
return 2 + this._destination.length() + this._data.length();
|
|
},
|
|
"serialize": function(ba) {
|
|
this._system.serialize(ba);
|
|
|
|
if (!this.isSystem()) {
|
|
this._destination.serialize(ba);
|
|
this._senderId.serialize(ba);
|
|
}
|
|
|
|
ba.push8(this._data.getType());
|
|
this._data.serialize(ba);
|
|
},
|
|
"setSenderId": function(id) {
|
|
if (!(id instanceof Uint64)) {
|
|
throw new Error("Can't set id, which is not Uint64");
|
|
}
|
|
this._senderId = id;
|
|
},
|
|
"size": function() {
|
|
var size = this._system.size() + this._data.size() + 1
|
|
if (!this.isSystem()) {
|
|
size += this._senderId.size() + this._destination.size();
|
|
}
|
|
return size;
|
|
},
|
|
"toString": function() {
|
|
var str = "{";
|
|
|
|
str += "system: " + this._system.toString();
|
|
str += " destination: " + this._destination.toString();
|
|
str += " sender: " + this._senderId.toString();
|
|
str += " data: " + this._data.toString();
|
|
|
|
str += "}";
|
|
|
|
return str;
|
|
}
|
|
});
|
|
|
|
module.exports = Event;
|