UNPKG

diffusion

Version:

Diffusion JavaScript client

38 lines (32 loc) 1.4 kB
var HeadersTunnel = require('v4-stack/headers-tunnel'); var Message = require('v4-stack/message'); var log = require('util/logger').create('V4 Client Routing'); module.exports = function TopicRouting(session, serviceAdapter, conversationSet, cache, registry) { this.route = function(message) { switch(message.type) { case Message.types.FETCH_REPLY: var cid = HeadersTunnel.cidFromHeaders(message.headers); conversationSet.respondIfPresent(cid, message); break; case Message.types.SERVICE_REQUEST: case Message.types.SERVICE_RESPONSE: case Message.types.SERVICE_ERROR: serviceAdapter.onMessage(message.type, message.getInputStream()); break; case Message.types.TOPIC_VALUE: cache.handleValue(session, message.id, message.data, registry); break; case Message.types.TOPIC_DELTA: cache.handleDelta(session, message.id, message.data, registry); break; default: log.debug('Unhandled V4 message: ' + message.type, message); } }; this.subscribe = function(info) { cache.handleSubscription(info, registry); }; this.unsubscribe = function(id, reason) { cache.handleUnsubscription(id, reason, registry); }; };