Skip to content

Instantly share code, notes, and snippets.

@RubyRubenstahl
Last active July 2, 2017 18:09
Show Gist options
  • Save RubyRubenstahl/8c85b9c7406d6061d8271d2663ebada0 to your computer and use it in GitHub Desktop.
Save RubyRubenstahl/8c85b9c7406d6061d8271d2663ebada0 to your computer and use it in GitHub Desktop.
function DeviceManager(driverFactory) {
var devices = {};
function addDevice(name, driver, config){
if(devices[name] !== undefined){
return Promise.reject(new Error(`Device with name of ${ name } already exists`));
}
driverFactory.create(driver, config, {})
.then(
function(driverInstance){
devices[name] = driverInstance;
});
}
function exec(deviceName, command, params){
devices[deviceName].commands[command].fn(params);
}
return({addDevice, devices, exec});
}
module.exports = function DriverFactory(drivers = {}){
function create(driver, config, node){
return new Promise((resolve, reject)=>{
if(drivers[driver] == undefined){
reject(new Error(`Driver ${ driver } does not exist`))
}
resolve(drivers[driver](config, node));
})
}
return({create});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment