fst – Rev 1
?pathlinks?
var SyncMessage = function (peer, action, jail, protocol, port, ip) {
// Check if all parameters are defined.
if (!Array.from(arguments).every(isDefined))
throw 'Argument exception'
// Public
this.peer = peer
this.action = action
this.jail = jail
this.protocol = protocol
this.port = port
this.ip = ip
// Flatten the object to an array.
this.toArray = function () {
// Flatten the payload to an array.
var clone = JSON.parse(JSON.stringify(this))
return Object.keys(clone).map(function (item) {
return clone[item]
})
}
// Helper function to check if parameter is defined.
function isDefined(param) {
return param !== null && param !== undefined
}
}
// Deserialize a SyncMessage from JSON.
SyncMessage.fromJSON = function (data) {
const payload = JSON.parse(data)
if (payload === null || typeof payload === undefined)
throw 'Deserialization failed'
for (var key in new SyncMessage()) {
if (typeof SyncMessage[key] !== 'undefined' && !payload.hasOwnProperty(key)) {
throw 'Deserialization failed'
}
}
var syncMessage
try {
syncMessage = new SyncMessage(
payload.peer,
payload.action,
payload.jail,
payload.protocol,
payload.port,
payload.ip
)
} catch (error) {
throw error
}
return syncMessage
}
module.exports = SyncMessage