45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var util = require('util');
|
|
|
|
var builderFactory = require('../builder/factory');
|
|
var WinParser = require('./win');
|
|
var MacParser = require('./mac');
|
|
var LinuxParser = require('./linux');
|
|
|
|
/**
|
|
* A factory creates a parser for parsing output from system ping
|
|
* @constructor
|
|
*/
|
|
function factory() {}
|
|
|
|
/**
|
|
* Create a parser for a given platform
|
|
* @param {string} addr - Hostname or ip addres
|
|
* @param {string} platform - Name of the platform
|
|
* @param {PingConfig} [config] - Config object in probe()
|
|
* @return {object} - Parser
|
|
* @throw if given platform is not supported
|
|
*/
|
|
factory.createParser = function (addr, platform, config) {
|
|
// Avoid function reassignment
|
|
var _config = config || {};
|
|
|
|
if (!builderFactory.isPlatformSupport(platform)) {
|
|
throw new Error(util.format('Platform |%s| is not support', platform));
|
|
}
|
|
|
|
var ret = null;
|
|
if (builderFactory.isWindow(platform)) {
|
|
ret = new WinParser(addr, _config);
|
|
} else if (builderFactory.isMacOS(platform)) {
|
|
ret = new MacParser(addr, _config);
|
|
} else if (builderFactory.isLinux(platform)) {
|
|
ret = new LinuxParser(addr, _config);
|
|
}
|
|
|
|
return ret;
|
|
};
|
|
|
|
module.exports = factory;
|