From 84093bcb6e1e93e21ebcdbe22b614d370e697210 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 2 May 2014 11:16:07 +0100 Subject: [PATCH] Make node loading more asynchronouse --- red/nodes.js | 274 ++++++++++++++++++++++++++++++++++---------------- red/server.js | 37 +++---- 2 files changed, 206 insertions(+), 105 deletions(-) diff --git a/red/nodes.js b/red/nodes.js index 65cc91fdc..be1cf9118 100644 --- a/red/nodes.js +++ b/red/nodes.js @@ -18,6 +18,9 @@ var EventEmitter = require("events").EventEmitter; var fs = require("fs"); var path = require("path"); var clone = require("clone"); +var when = require("when"); +var whenNode = require('when/node'); + var events = require("./events"); var storage = null; var settings = null; @@ -208,109 +211,206 @@ function createNode(node,def) { } function load(_settings) { - settings = _settings; - - var RED = require("./red.js"); - - function loadNode(nodeDir, nodeFn) { + return when.promise(function(resolve,reject) { + settings = _settings; - if (settings.nodesExcludes) { - for (var i=0;i 0) { - util.log("------------------------------------------"); - if (settings.verbose) { - for (var i=0;i 0) { + util.log("------------------------------------------"); + if (settings.verbose) { + for (var i=0;i 0) { - redNodes.setConfig(flows); - } - }).otherwise(function(err) { - util.log("[red] Error loading flows : "+err); + defer.resolve(); + storage.getFlows().then(function(flows) { + if (flows.length > 0) { + redNodes.setConfig(flows); + } + }).otherwise(function(err) { + util.log("[red] Error loading flows : "+err); + }); }); });