/** * Copyright 2014 IBM Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ var util = require("util"); var EventEmitter = require("events").EventEmitter; var clone = require("clone"); var when = require("when"); var flows = require("./flows"); var comms = require("../comms"); function Node(n) { this.id = n.id; flows.add(this); this.type = n.type; if (n.name) { this.name = n.name; } this.wires = n.wires||[]; } util.inherits(Node,EventEmitter); Node.prototype._on = Node.prototype.on; Node.prototype.on = function(event,callback) { var node = this; if (event == "close") { if (callback.length == 1) { this.close = function() { return when.promise(function(resolve) { callback.call(node,function() { resolve(); }); }); } } else { this.close = callback; } } else { this._on(event,callback); } } Node.prototype.close = function() { } Node.prototype.send = function(msg) { // instanceof doesn't work for some reason here if (msg == null) { return; } else if (!util.isArray(msg)) { msg = [msg]; } for (var i=0;i