diffusion
Version:
Diffusion JavaScript client
36 lines (30 loc) • 1.37 kB
JavaScript
var Codec = require('io/codec');
var UpdateConstraints = require('topic-update/update-constraint');
var UnconstrainedSerialiser = require('./unconstrained-serialiser');
var ConjunctionSerialiser = require('./conjunction-serialiser');
var BinaryValueSerialiser = require('./binary-value-serialiser');
var NoValueSerialiser = require('./no-value-serialiser');
var LockedSerialiser = require('./locked-serialiser');
var NoTopicSerialiser = require('./no-topic-serialiser');
var PartialJSONSerialiser = require('./partial-json-serialiser');
var ConstraintSerialisers = {
UNCONSTRAINED: UnconstrainedSerialiser,
CONJUNCTION: ConjunctionSerialiser,
BINARY_VALUE: BinaryValueSerialiser,
NO_VALUE: NoValueSerialiser,
LOCKED: LockedSerialiser,
NO_TOPIC: NoTopicSerialiser,
PARTIAL_JSON: PartialJSONSerialiser
};
var serialiser = {
write : function(output, constraint) {
if (constraint.getConstraintType === undefined
|| UpdateConstraints.ConstraintType[constraint.getConstraintType()] === undefined
) {
throw new Error("Unknown constraint type");
}
Codec.writeByte(output, UpdateConstraints.ConstraintType[constraint.getConstraintType()]);
ConstraintSerialisers[constraint.getConstraintType()].write(output, constraint, this.write);
}
};
module.exports = serialiser;