UNPKG

diffusion

Version:

Diffusion JavaScript client

44 lines (34 loc) 1.29 kB
var TopicCacheEntry = require('routing/topic-cache-entry'); module.exports = function DatatypeCacheEntry(streams, path, details, specification, datatype) { TopicCacheEntry.call(this, streams, path, details, specification); var value; var buffer; this.handleValue = function(received, registry, errorHandler) { var oldValue = value; try { value = datatype.readValue(received); buffer = received; this.notifyValue(received, oldValue, value, registry); } catch (e) { errorHandler(e); } }; this.handleDelta = function(received, registry, errorHandler) { var oldValue = value; var deltaType; try { deltaType = datatype.deltaType("binary"); var delta = deltaType.readDelta(received); value = deltaType.apply(oldValue, delta); buffer = datatype.writeValue(value); this.notifyDelta(received, delta, oldValue, value, registry); } catch (e) { errorHandler(e); } }; this.notifyValueToNewStream = function(path, details, specification, stream) { if (buffer) { stream.onValue(path, details, specification, buffer, null, value); } }; };