diffusion
Version:
Diffusion JavaScript client
37 lines (25 loc) • 1.12 kB
JavaScript
var Codec = require('io/codec');
var BEES = require('serialisers/byte-encoded-enum-serialiser');
var FetchQueryResult = require('services/fetch-query/fetch-query-result');
var FetchTopicResult = require('services/fetch-query/fetch-topic-result');
var TopicType = require('../../../topics/topics').TopicType;
function readProperties(input) {
return Codec.readDictionary(input, Codec.readString);
}
function readFetchTopicResult(input) {
var path = Codec.readString(input);
var type = BEES.read(input, TopicType);
var valueOption = Codec.readByte(input);
var value = (valueOption !== 0) ? Codec.readBytes(input) : undefined;
var propertiesIndex = Codec.readInt32(input);
return new FetchTopicResult(path, type, value, propertiesIndex);
}
var serialiser = {
read : function(input) {
var properties = Codec.readCollection(input, readProperties);
var results = Codec.readCollection(input, readFetchTopicResult);
var hasMore = Codec.readBoolean(input);
return new FetchQueryResult(properties, results, hasMore);
}
};
module.exports = serialiser;