devir-mbclient
Version:
MB client
98 lines (77 loc) • 3.7 kB
JavaScript
/**
* Created by mac on 17.09.15.
*/
var shortid = require("shortid");
var EventEmitter = require('events').EventEmitter;
var messageFactory = require("devir-mbcommon").messageFactory;
var request = require("devir-mbcommon").request;
module.exports = function(params, onRequest, onConnected){
var internalEvents = new EventEmitter();
var _connector;
var registerConnector = function(connector,remoteAddress, remotePort){
_connector = new connector(remoteAddress, remotePort, onData, onConnected)
_connector.connect();
}
var onData = function(dataString){
var gotObject = JSON.parse(dataString);
if (gotObject.requestType) {
if (gotObject.requestType == "request") {
onRequest(new request(gotObject.requestId, gotObject.route, gotObject.payload, sendResponse));
} else if (gotObject.requestType == "response") {
internalEvents.emit('resp:' + gotObject.requestId, gotObject.payload);
} else if (gotObject.requestType == "responseError") {
gotObject.payload.isError = true;
internalEvents.emit('resp:' + gotObject.requestId, gotObject.payload);
} else if (gotObject.requestType == "event") {
internalEvents.emit('event:' + gotObject.eventname, gotObject.payload);
}
}
}
var sendRequest = function(requestId,route, payload) {
_connector.send(messageFactory.getRequestMessage(requestId, route, payload));
}
var sendResponse = function(requestId, payload){
_connector.send(messageFactory.getResponseMessage(requestId, payload));
}
var sendRegisterService = function(id, routes){
_connector.send(messageFactory.getRegisterServiceMessage(id, routes));
}
var sendRegisterEvent = function(requestId, name){
_connector.send(messageFactory.getRegisterEventMessage(requestId, name));
}
var sendRegisterQueue = function(requestId, name, isPersist, maxVolume){
_connector.send(messageFactory.getRegisterQueueMessage(requestId, name, isPersist, maxVolume));
}
var sendSubscribeToEvent = function(requestId, name){
_connector.send(messageFactory.getSubscribeToEventMessage(requestId, name));
}
var sendUnsubscribeFromEvent = function(requestId, name){
_connector.send(messageFactory.getUnsubscribeFromEventMessage(requestId, name));
}
var sendFireEvent = function(requestId, name, payload){
_connector.send(messageFactory.getFireEventMessage(requestId,payload, name));
}
var sendSubscribeToQueueChange = function(requestId, name){
_connector.send(messageFactory.getSubscribeToQueueChangeMessage(requestId,name));
}
var sendPushToQueue = function(requestId, name, payload){
_connector.send(messageFactory.getPushToQueueMessage(requestId,name,payload));
}
var sendPopFromQueue = function(requestId, name){
_connector.send(messageFactory.getPopFromQueueMessage(requestId,name));
}
return {
events: internalEvents,
registerConnector: registerConnector,
sendRequest: sendRequest,
sendRegisterService: sendRegisterService,
sendRegisterQueue: sendRegisterQueue,
sendSubscribeToQueueChange: sendSubscribeToQueueChange,
sendPushToQueue: sendPushToQueue,
sendPopFromQueue: sendPopFromQueue,
sendRegisterEvent:sendRegisterEvent,
sendSubscribeToEvent: sendSubscribeToEvent,
sendUnsubscribeFromEvent: sendUnsubscribeFromEvent,
sendFireEvent:sendFireEvent
}
}