Skip to content

Commit

Permalink
#47 server worker manager have been moved to standalone so it can be …
Browse files Browse the repository at this point in the history
…used in the rest also
  • Loading branch information
kecso committed Apr 3, 2015
1 parent 82e49f1 commit 9ff9ced
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
14 changes: 14 additions & 0 deletions src/server/standalone.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ var Path = require('path'),
SSTORE = require('./middleware/auth/sessionstore'),
Logger = require('./logger'),

ServerWorkerManager = require('./worker/serverworkermanager'),

servers = [],

mainLogger;
Expand Down Expand Up @@ -191,6 +193,8 @@ function StandAloneServer(gmeConfig) {

__storageOptions.sessionToUser = __sessionStore.getSessionUser;

__storageOptions.workerManager = __workerManager;

__storageOptions.globConf = gmeConfig;
__storage = Storage(__storageOptions); // FIXME: why do not we use the 'new' keyword here?
//end of storage creation
Expand All @@ -217,6 +221,9 @@ function StandAloneServer(gmeConfig) {
// FIXME: is this call synchronous?
__storage.close();

//kill all remaining workers
__workerManager.stop();

// request server close - do not accept any new connections.
// first we have to request the close then we can destroy the sockets.
__httpServer.close(function (err) {
Expand Down Expand Up @@ -463,6 +470,7 @@ function StandAloneServer(gmeConfig) {
__secureSiteInfo = {},
__app = null,
__sessionStore,
__workerManager,
__users = {},
__googleAuthenticationSet = false,
__googleStrategy = PassGoogle.Strategy,
Expand All @@ -489,6 +497,12 @@ function StandAloneServer(gmeConfig) {
logger.debug("initializing session storage");
__sessionStore = new SSTORE();

logger.debug('initializing server worker manager');
__workerManager = new ServerWorkerManager({
sessionToUser: __sessionStore.getSessionUser,
globConf: gmeConfig
});

logger.debug("initializing authentication modules");
//TODO: do we need to create this even though authentication is disabled?
__gmeAuth = new GMEAUTH(__sessionStore, gmeConfig);
Expand Down
19 changes: 5 additions & 14 deletions src/server/storage/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ var server = function (_database, options) {
_databaseOpenCallbacks = [],
_databaseOpened = false,
ERROR_DEAD_GUID = 'the given object does not exists',
_workerManager = null,
_connectedWorkers = {},
_eventHistory = [],
_events = {},
Expand Down Expand Up @@ -658,7 +657,7 @@ var server = function (_database, options) {
//worker commands
socket.on('simpleRequest', function (parameters, callback) {
var request = function () {
_workerManager.request(parameters, function (err, id) {
options.workerManager.request(parameters, function (err, id) {
if (!err && id) {
registerConnectedWorker(socket.id, id);
}
Expand Down Expand Up @@ -686,7 +685,7 @@ var server = function (_database, options) {
});

socket.on('simpleQuery', function (workerId, parameters, callback) {
_workerManager.query(workerId, parameters, callback);
options.workerManager.query(workerId, parameters, callback);
});

//eventing
Expand All @@ -704,11 +703,6 @@ var server = function (_database, options) {
stopConnectedWorkers(socket.id);
});
});

_workerManager = new SWM({
sessionToUser: options.sessionToUser,
globConf: gmeConfig
});
}

function close() {
Expand All @@ -725,9 +719,6 @@ var server = function (_database, options) {
var cleanup = function () {
_objects = {};
_projects = {};
if (_workerManager) {
_workerManager.stop();
}
//_references = {};
_databaseOpened = false;
};
Expand All @@ -748,7 +739,7 @@ var server = function (_database, options) {
}

function getWorkerResult(resultId, callback) {
_workerManager.result(resultId, callback);
options.workerManager.result(resultId, callback);
}

//connected worker handlings for cleanup
Expand All @@ -772,9 +763,9 @@ var server = function (_database, options) {

function stopConnectedWorkers(socketId) {
var i;
if (_workerManager) {
if (options.workerManager) {
var stop = function (worker) {
_workerManager.result(_connectedWorkers[socketId][i], function (err) {
options.workerManager.result(_connectedWorkers[socketId][i], function (err) {
if (err) {
options.log.error("unable to stop connected worker [" + worker + "] of socket " + socketId);
}
Expand Down

0 comments on commit 9ff9ced

Please sign in to comment.