From 39b64a4ecd85d54f78ce88627bdbc36954896272 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 14 Feb 2016 11:02:08 -0500 Subject: [PATCH] timeout --- routes/api.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/routes/api.js b/routes/api.js index 4fb20de..fae6331 100644 --- a/routes/api.js +++ b/routes/api.js @@ -8,7 +8,26 @@ var client = redis.createClient(); var request = require('request'); var lxc = require('../lxc'); + +var timeoutEvents = {}; +var ip2name = {}; + +var lxcTimeout = function(ip, time){ + var name = ip2name[ip]; + console.log(name) + time = time || 100000; + var keys = Object.keys(timeoutEvents) + if(keys.indexOf(name) !== -1){ + clearTimeout(timeoutEvents[name]) + } + timeoutEvents[name] = setTimeout(function(){ + lxc.stop(name); + }, time); +} + + var runner = function(req, res, ip){ + lxcTimeout(ip, 30000); return request.post({url:'http://'+ip, form: req.body}, function(error, response, body){ body = JSON.parse(body); body['ip'] = ip.replace('10.0.', ''); @@ -113,6 +132,7 @@ router.post('/run/:ip?', function doRun(req, res, next){ }else{ var name = 'u1-'+(Math.random()*100).toString().replace('.',''); return lxc.startEphemeral(name, 'u1', function(data){ + ip2name[data.ip] = name; return runner(req, res, data.ip); }); }