diffusion
Version:
Diffusion JavaScript client
39 lines (33 loc) • 1.48 kB
JavaScript
var SessionIdSerialiser = require('session/session-id-serialiser');
var SessionPropertiesEventType = require('services/control/session-properties-event-type');
var SessionCloseReason = require('services/control/session-close-reason');
var Codec = require('io/codec');
var BEES = require('serialisers/byte-encoded-enum-serialiser');
var serialiser = {
read: function (input) {
var result = {
sessionId: SessionIdSerialiser.read(input),
type: BEES.read(input, SessionPropertiesEventType)
};
switch (result.type) {
case SessionPropertiesEventType.OPEN:
result.oldProperties = Codec.readDictionary(input, Codec.readString);
break;
case SessionPropertiesEventType.UPDATE:
result.updateType = Codec.readByte(input);
result.oldProperties = Codec.readDictionary(input, Codec.readString);
result.newProperties = Codec.readDictionary(input, Codec.readString);
break;
case SessionPropertiesEventType.CLOSE:
result.closeReason = BEES.read(input, SessionCloseReason);
result.oldProperties = Codec.readDictionary(input, Codec.readString);
break;
default:
throw new Error('Unknown session properties event type: ' + result.type);
}
return result;
},
write: function () {
}
};
module.exports = serialiser;