UNPKG

devir-mbclient

Version:

MB client

151 lines (130 loc) 4.3 kB
/** * Created by mac on 17.09.15. */ var _ = require("underscore"); var shortid = require("shortid"); module.exports = function(connector, remoteAddr, remotePort, onConnected){ var id = shortid.generate(); var core = new require("./core")({}, onRequest, onConnected); core.registerConnector(connector, remoteAddr, remotePort); var routingTable = []; function onRequest(request){ _.find(routingTable, function(route){ return route.route == request.route; }).callBack(request); } function sendRequest(route, payload, callback){ var id = shortid.generate(); core.sendRequest(id, route, payload); core.events.once("resp:"+id, function(data){ if(data.isError) callback(data, null); else callback(null, data); }); } function registerQueue(name, isPersist, maxVolume, callback){ var id = shortid.generate(); core.sendRegisterQueue(id,name, isPersist, maxVolume); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else callback(null, data); }); } function subscribeToQueueChange(name, callback, eventCallBack){ var id = shortid.generate(); core.sendSubscribeToQueueChange(id,name); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else { core.events.on("event:"+name+":changed", eventCallBack); callback(null, data); } }) } function pushToQueue(name, payload, callback){ var id = shortid.generate(); core.sendPushToQueue(id,name, payload); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else { callback(null, data); } }) } function popFromQueue(name, callback){ var id = shortid.generate(); core.sendPopFromQueue(id,name); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else { callback(null, data); } }); } function registerEvent(name, callback){ var id = shortid.generate(); core.sendRegisterEvent(id,name); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else callback(null, data); }) } function subscribeToEvent(name, callback, eventCallback){ var id = shortid.generate(); core.sendSubscribeToEvent(id,name); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else core.events.on("event:"+name, eventCallback); callback(null, data); }) } function unsubscribeFromEvent(name, callback){ var id = shortid.generate(); core.sendUnsubscribeFromEvent(id,name); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else callback(null, data); }); } function fireEvent(name, payload, callback){ var id = shortid.generate(); core.sendFireEvent(id,name, payload); core.events.on("resp:"+id, function(data){ if(data.isError) callback(data, null); else callback(null, data); }); } function registerRoute(route, callBack){ routingTable.push({route: route, callBack: callBack}); } function registerService(){ core.sendRegisterService(id, _.pluck(routingTable, 'route')); } return { registerRoute: registerRoute, sendRequest: sendRequest, registerService: registerService, registerQueue: registerQueue, subscribeToQueueChange: subscribeToQueueChange, pushToQueue: pushToQueue, popFromQueue: popFromQueue, registerEvent: registerEvent, subscribeToEvent: subscribeToEvent, unsubscribeFromEvent: unsubscribeFromEvent, fireEvent: fireEvent } }