| /* |
| * Utilities: A classic collection of JavaScript utilities |
| * Copyright 2112 Matthew Eernisse (mde@fleegix.org) |
| * |
| * 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 network |
| , net = require('net'); |
| |
| /** |
| @name network |
| @namespace network |
| */ |
| |
| network = new (function () { |
| /** |
| @name network#isPortOpen |
| @public |
| @function |
| @description Checks if the given port in the given host is open |
| @param {Number} port number |
| @param {String} host |
| @param {Function} callback Callback function -- should be in the format |
| of function(err, result) {} |
| */ |
| this.isPortOpen = function (port, host, callback) { |
| if (typeof host === 'function' && !callback) { |
| callback = host; |
| host = 'localhost'; |
| } |
| |
| var isOpen = false |
| , connection |
| , error; |
| |
| connection = net.createConnection(port, host, function () { |
| isOpen = true; |
| connection.end(); |
| }); |
| |
| connection.on('error', function (err) { |
| // We ignore 'ECONNREFUSED' as it simply indicates the port isn't open. |
| // Anything else is reported |
| if(err.code !== 'ECONNREFUSED') { |
| error = err; |
| } |
| }); |
| |
| connection.setTimeout(400, function () { |
| connection.end(); |
| }); |
| |
| connection.on('close', function () { |
| callback && callback(error, isOpen); |
| }); |
| }; |
| |
| })(); |
| |
| module.exports = network; |