diffusion
Version:
Diffusion JavaScript client
38 lines (32 loc) • 1.4 kB
JavaScript
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);
};
};