Commit b30a7134bbb2a55afb3cd078c30968afdf773423
1 parent
388f5560
Exists in
master
and in
1 other branch
adiciona suporte a queue
Showing
10 changed files
with
170 additions
and
126 deletions
Show diff stats
endpoints/ios.js
1 | 1 | var parameters = require('../helpers/parameters'); |
2 | 2 | var properties = require('../helpers/properties'); |
3 | - | |
3 | +var queue_helper = require('../helpers/queue'); | |
4 | 4 | var exec = require('child_process').exec, child; |
5 | 5 | var uuid = require('node-uuid'); |
6 | 6 | var fs = require('fs'); |
7 | +var kue = require('kue'), | |
8 | + queue = kue.createQueue(); | |
7 | 9 | |
8 | 10 | function init(req, res) { |
9 | 11 | |
... | ... | @@ -22,25 +24,37 @@ function init(req, res) { |
22 | 24 | } |
23 | 25 | |
24 | 26 | /* Cria a linha de comando */ |
25 | - var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' + | |
27 | + var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' + | |
26 | 28 | id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' IOS > /tmp/core_log 2>&1'; |
27 | 29 | |
28 | - console.log(command_line) | |
30 | + console.log(command_line); | |
29 | 31 | |
30 | 32 | /* Executa a linha de comando */ |
31 | - child = exec(command_line, function(err, stdout, stderr) { | |
32 | - // [stdout] = vlibras-core output | |
33 | + // child = exec(command_line, function(err, stdout, stderr) { | |
34 | + // // [stdout] = vlibras-core output | |
35 | + // }); | |
36 | + | |
37 | + var child; | |
38 | + var job = queue.create('exec_command_line', { | |
39 | + title: 'Command Line for: ' + req.body.servico, | |
40 | + command_line: command_line | |
41 | + }).save(); | |
42 | + | |
43 | + queue.process('exec_command_line', function(job, done){ | |
44 | + child = queue_helper.exec_command_line(job.data.command_line, done); | |
33 | 45 | }); |
34 | 46 | |
35 | - /* Listener que dispara quando a requisição ao core finaliza */ | |
36 | - child.on('close', function(code, signal){ | |
37 | - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' }); | |
38 | - }); | |
47 | + job.on('complete', function() { | |
48 | + /* Listener que dispara quando a requisição ao core finaliza */ | |
49 | + child.on('close', function(code, signal){ | |
50 | + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' }); | |
51 | + }); | |
39 | 52 | |
40 | - /* Listener que dispara quando a requisição ao core da erro */ | |
41 | - child.on('error', function(code, signal){ | |
42 | - res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
53 | + /* Listener que dispara quando a requisição ao core da erro */ | |
54 | + child.on('error', function(code, signal){ | |
55 | + res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
56 | + }); | |
43 | 57 | }); |
44 | -}; | |
58 | +} | |
45 | 59 | |
46 | 60 | module.exports.init = init; | ... | ... |
endpoints/legenda.js
1 | 1 | var parameters = require('../helpers/parameters'); |
2 | 2 | var properties = require('../helpers/properties'); |
3 | - | |
3 | +var queue_helper = require('../helpers/queue'); | |
4 | 4 | var exec = require('child_process').exec, child; |
5 | 5 | var uuid = require('node-uuid'); |
6 | 6 | var fs = require('fs'); |
7 | +var kue = require('kue'), | |
8 | + queue = kue.createQueue(); | |
7 | 9 | |
8 | 10 | function init(req, res) { |
9 | 11 | |
... | ... | @@ -42,21 +44,33 @@ function init(req, res) { |
42 | 44 | req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id; |
43 | 45 | |
44 | 46 | /* Executa a linha de comando */ |
45 | - child = exec(command_line, function(err, stdout, stderr) { | |
46 | - // [stdout] = vlibras-core output | |
47 | - // console.log(stdout); | |
48 | - }); | |
47 | + // child = exec(command_line, function(err, stdout, stderr) { | |
48 | + // // [stdout] = vlibras-core output | |
49 | + // // console.log(stdout); | |
50 | + // }); | |
49 | 51 | |
50 | - /* Listener que dispara quando a requisição ao core finaliza */ | |
51 | - child.on('close', function(code, signal){ | |
52 | - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' }); | |
53 | - }); | |
52 | + var job = queue.create('exec_command_line', { | |
53 | + title: 'Command Line for: ' + req.body.servico, | |
54 | + command_line: command_line | |
55 | + }).save(); | |
54 | 56 | |
55 | - /* Listener que dispara quando a requisição ao core da erro */ | |
56 | - child.on('error', function(code, signal){ | |
57 | - res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
57 | + queue.process('exec_command_line', function(job, done){ | |
58 | + child = queue_helper.exec_command_line(job.data.command_line, done); | |
58 | 59 | }); |
60 | + | |
61 | + job.on('complete', function() { | |
62 | + /* Listener que dispara quando a requisição ao core finaliza */ | |
63 | + child.on('close', function(code, signal){ | |
64 | + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' }); | |
65 | + }); | |
66 | + | |
67 | + /* Listener que dispara quando a requisição ao core da erro */ | |
68 | + child.on('error', function(code, signal){ | |
69 | + res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
70 | + }); | |
71 | + }) | |
72 | + | |
59 | 73 | }); |
60 | 74 | }; |
61 | 75 | |
62 | -module.exports.init = init; | |
63 | 76 | \ No newline at end of file |
77 | +module.exports.init = init; | ... | ... |
endpoints/texto.js
... | ... | @@ -34,7 +34,8 @@ function init(req, res, Request) { |
34 | 34 | |
35 | 35 | db.create(request_object, function(result) { |
36 | 36 | if (result !== null) { |
37 | - res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.'}); | |
37 | + // TODO retornar ID do video | |
38 | + res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id}); | |
38 | 39 | } else { |
39 | 40 | res.send(500, { 'error': 'Erro na criação da requisição.'}); |
40 | 41 | } |
... | ... | @@ -42,55 +43,36 @@ function init(req, res, Request) { |
42 | 43 | |
43 | 44 | /* Cria a linha de comando */ |
44 | 45 | var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' + |
45 | - id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' WEB > /tmp/core_log 2>&1'; | |
46 | - | |
47 | -console.log(command_line); | |
46 | + id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' Web > /tmp/core_log 2>&1'; | |
48 | 47 | |
48 | + console.log(command_line); | |
49 | + var child; | |
49 | 50 | var job = queue.create('exec_command_line', { |
50 | 51 | title: 'Command Line for: ' + req.body.servico, |
51 | 52 | command_line: command_line |
52 | 53 | }).save(); |
53 | 54 | |
54 | - | |
55 | - /* Executa a linha de comando */ | |
56 | - // child = exec(command_line, function(err, stdout, stderr) { | |
57 | - // // [stdout] = vlibras-core output | |
58 | - // }); | |
59 | - | |
60 | - | |
61 | - // vai remover isso em cima e colocar isso aqui | |
62 | 55 | queue.process('exec_command_line', function(job, done){ |
63 | - queue_helper.exec_command_line(job.data.command_line, done); | |
56 | + child = queue_helper.exec_command_line(job.data.command_line, done); | |
64 | 57 | }); |
65 | 58 | |
66 | - job.on('complete', function(){ | |
67 | - console.log("Job complete"); | |
59 | + job.on('complete', function() { | |
60 | + /* Listener que dispara quando a requisição ao core finaliza */ | |
61 | + child.on('close', function(code, signal) { | |
62 | + // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' }); | |
68 | 63 | db.update(request_object, 'Completed', function(result) { |
69 | - }); | |
64 | + }); | |
65 | + }); | |
70 | 66 | |
71 | - }).on('failed', function(){ | |
72 | - console.log("Job failed"); | |
73 | - res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
74 | - db.update(request_object, 'Error', function(result) { | |
75 | - }); | |
76 | - }).on('progress', function(progress){ | |
77 | - process.stdout.write('\r job #' + job.id + ' ' + progress + '% complete'); | |
78 | - }); | |
67 | + /* Listener que dispara quando a requisição ao core da erro */ | |
68 | + child.on('error', function(code, signal){ | |
69 | + res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
70 | + db.update(request_object, 'Error', function(result) { | |
71 | + }); | |
72 | + }); | |
79 | 73 | |
74 | + }); | |
80 | 75 | |
81 | - /* Listener que dispara quando a requisição ao core finaliza */ | |
82 | -// child.on('close', function(code, signal){ | |
83 | -// // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' }); | |
84 | -// db.update(request_object, 'Completed', function(result) { | |
85 | -// }); | |
86 | -// }); | |
87 | -// | |
88 | -// /* Listener que dispara quando a requisição ao core da erro */ | |
89 | -// child.on('error', function(code, signal){ | |
90 | -// res.send(500, parameters.errorMessage('Erro na chamada ao core')); | |
91 | -// db.update(request_object, 'Error', function(result) { | |
92 | -// }); | |
93 | -// }); | |
94 | 76 | } |
95 | 77 | |
96 | 78 | module.exports.init = init; | ... | ... |
endpoints/video.js
... | ... | @@ -21,7 +21,7 @@ function init(req, res) { |
21 | 21 | res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); |
22 | 22 | return; |
23 | 23 | } |
24 | - | |
24 | + | |
25 | 25 | process(req, res); |
26 | 26 | }; |
27 | 27 | |
... | ... | @@ -29,7 +29,7 @@ function process(req, res) { |
29 | 29 | var id = uuid.v4(); |
30 | 30 | var folder = properties.uploads_folder + id; |
31 | 31 | var locals = {}; |
32 | - | |
32 | + | |
33 | 33 | async.series([ |
34 | 34 | // Cria a pasta apropriada |
35 | 35 | function(callback) { | ... | ... |
endpoints/video_legenda.js
... | ... | @@ -21,7 +21,7 @@ function init(req, res) { |
21 | 21 | res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); |
22 | 22 | return; |
23 | 23 | } |
24 | - | |
24 | + | |
25 | 25 | process(req, res); |
26 | 26 | }; |
27 | 27 | |
... | ... | @@ -29,7 +29,7 @@ function process(req, res) { |
29 | 29 | var id = uuid.v4(); |
30 | 30 | var folder = properties.uploads_folder + id; |
31 | 31 | var locals = {}; |
32 | - | |
32 | + | |
33 | 33 | async.series([ |
34 | 34 | // Cria a pasta apropriada |
35 | 35 | function(callback) { | ... | ... |
helpers/core.js
1 | 1 | var requests = require('../helpers/requests'); |
2 | 2 | var properties = require('../helpers/properties'); |
3 | - | |
3 | +var queue_helper = require('../helpers/queue'); | |
4 | 4 | var url = require('url'); |
5 | 5 | var http = require('http'); |
6 | 6 | var querystring = require('querystring'); |
7 | 7 | var exec = require('child_process').exec, child; |
8 | +var kue = require('kue'), | |
9 | + queue = kue.createQueue(); | |
8 | 10 | |
9 | 11 | function call(id, command_line, req, res) { |
10 | 12 | /* Executa a linha de comando */ |
11 | - child = exec(command_line, function(err, stdout, stderr) { | |
12 | - // [stdout] = vlibras-core output | |
13 | - // console.log('Err: ' + err); | |
14 | - // console.log('STDOUT: ' + stdout); | |
15 | - // console.log('STDERR: ' + stderr); | |
13 | + // child = exec(command_line, function(err, stdout, stderr) { | |
14 | + // // [stdout] = vlibras-core output | |
15 | + // // console.log('Err: ' + err); | |
16 | + // // console.log('STDOUT: ' + stdout); | |
17 | + // // console.log('STDERR: ' + stderr); | |
18 | + // }); | |
19 | + | |
20 | + var child, | |
21 | + job = queue.create('exec_command_line', { | |
22 | + title: 'Command Line for: ' + req.body.servico, | |
23 | + command_line: command_line | |
24 | + }).save(); | |
25 | + | |
26 | + queue.process('exec_command_line', function(job, done){ | |
27 | + child = queue_helper.exec_command_line(job.data.command_line, done); | |
28 | + if (child === undefined) { | |
29 | + throw "Erro ao conectar com o core"; | |
30 | + } | |
16 | 31 | }); |
17 | 32 | |
18 | - // Se o callback não foi definido | |
19 | - if (req.body.callback === undefined) { | |
33 | + job.on('complete', function() { | |
34 | + // Se o callback não foi definido | |
35 | + if (req.body.callback === undefined) { | |
20 | 36 | |
21 | - // Se a chamada foi feita com sucesso | |
22 | - child.on('close', function(code, signal) { | |
37 | + // Se a chamada foi feita com sucesso | |
38 | + child.on('close', function(code, signal) { | |
23 | 39 | |
24 | - // Se o core executou com erro | |
25 | - if (code !== 0) { | |
26 | - throw "Erro no retorno do core. Código: " + code; | |
27 | - } | |
40 | + // Se o core executou com erro | |
41 | + if (code !== 0) { | |
42 | + throw "Erro no retorno do core. Código: " + code; | |
43 | + } | |
28 | 44 | |
29 | - // Se o core executou normal | |
30 | - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); | |
31 | - }); | |
45 | + // Se o core executou normal | |
46 | + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); | |
47 | + }); | |
32 | 48 | |
33 | - // Se a chamada deu erro | |
34 | - child.on('error', function(code, signal) { | |
35 | - throw "Erro na chamada ao core"; | |
36 | - }); | |
49 | + // Se a chamada deu erro | |
50 | + child.on('error', function(code, signal) { | |
51 | + throw "Erro na chamada ao core"; | |
52 | + }); | |
37 | 53 | |
38 | 54 | |
39 | - // Se o callback foi definido | |
40 | - } else { | |
55 | + // Se o callback foi definido | |
56 | + } else { | |
41 | 57 | |
42 | - // Se a chamada foi feita com sucesso | |
43 | - child.on('close', function(code, signal) { | |
58 | + // Se a chamada foi feita com sucesso | |
59 | + child.on('close', function(code, signal) { | |
44 | 60 | |
45 | - // Endereço do callback | |
46 | - var path = url.parse(req.body.callback); | |
61 | + // Endereço do callback | |
62 | + var path = url.parse(req.body.callback); | |
47 | 63 | |
48 | - // Se o core executou com erro | |
49 | - if (code === 0) { | |
50 | - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id }); | |
51 | - } else { | |
52 | - var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id }); | |
53 | - } | |
64 | + // Se o core executou com erro | |
65 | + if (code === 0) { | |
66 | + var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id }); | |
67 | + } else { | |
68 | + var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id }); | |
69 | + } | |
54 | 70 | |
55 | - // Chama o callback | |
56 | - requests.postRequest(path, data); | |
57 | - }); | |
71 | + // Chama o callback | |
72 | + requests.postRequest(path, data); | |
73 | + }); | |
58 | 74 | |
59 | - // Se a chamada deu erro | |
60 | - child.on('error', function(code, signal) { | |
61 | - var path = url.parse(req.body.callback); | |
62 | - var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } ); | |
75 | + // Se a chamada deu erro | |
76 | + child.on('error', function(code, signal) { | |
77 | + var path = url.parse(req.body.callback); | |
78 | + var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } ); | |
63 | 79 | |
64 | - requests.postRequest(path, data); | |
65 | - }); | |
80 | + requests.postRequest(path, data); | |
81 | + }); | |
66 | 82 | |
67 | - // Retorno da primeira requisição | |
68 | - res.send(200, JSON.stringify({ 'id': id })); | |
69 | - } | |
83 | + // Retorno da primeira requisição | |
84 | + res.send(200, JSON.stringify({ 'id': id })); | |
85 | + } | |
86 | + }); | |
70 | 87 | } |
71 | 88 | |
72 | -module.exports.call = call; | |
73 | 89 | \ No newline at end of file |
90 | +module.exports.call = call; | ... | ... |
helpers/queue.js
1 | 1 | var exec = require('child_process').exec, child; |
2 | 2 | |
3 | 3 | exports.exec_command_line = function (command_line, callback) { |
4 | - child = exec(command_line, function(err, stdout, stderr) { | |
5 | - // [stdout] = vlibras-core output | |
6 | - }); | |
7 | - callback(); | |
4 | + | |
5 | + child = exec(command_line, function(err, stdout, stderr) { | |
6 | + // console.log('Err: ' + err); | |
7 | + // console.log('STDOUT: ' + stdout); | |
8 | + // console.log('STDERR: ' + stderr); | |
9 | + }); | |
10 | + //callback(); | |
11 | + // if (child === undefined) { | |
12 | + // throw "Erro ao conectar com o core"; | |
13 | + // } | |
14 | + child.on('error', function(code, signal) { | |
15 | + throw "Erro ao conectar com o core"; | |
16 | + }); | |
17 | + child.on('disconnect', function(code, signal) { | |
18 | + throw "Disconectado do core"; | |
19 | + }); | |
20 | + return child; | |
21 | + | |
8 | 22 | }; | ... | ... |
node_modules/ip/package.json
1 | 1 | { |
2 | 2 | "name": "ip", |
3 | - "version": "0.3.2", | |
3 | + "version": "0.3.3", | |
4 | 4 | "author": { |
5 | 5 | "name": "Fedor Indutny", |
6 | 6 | "email": "fedor@indutny.com" |
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | "homepage": "https://github.com/indutny/node-ip", |
9 | 9 | "repository": { |
10 | 10 | "type": "git", |
11 | - "url": "http://github.com/indutny/node-ip.git" | |
11 | + "url": "git+ssh://git@github.com/indutny/node-ip.git" | |
12 | 12 | }, |
13 | 13 | "main": "lib/ip", |
14 | 14 | "devDependencies": { |
... | ... | @@ -17,15 +17,17 @@ |
17 | 17 | "scripts": { |
18 | 18 | "test": "mocha --reporter spec test/*-test.js" |
19 | 19 | }, |
20 | - "gitHead": "978e13d19531c9d9172044654df9dfb7ed116e45", | |
20 | + "license": "MIT", | |
21 | + "gitHead": "7798e2d222718087863d8a5a99e3c02f3a30e2b9", | |
21 | 22 | "description": "IP address utilities for node.js", |
22 | 23 | "bugs": { |
23 | 24 | "url": "https://github.com/indutny/node-ip/issues" |
24 | 25 | }, |
25 | - "_id": "ip@0.3.2", | |
26 | - "_shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db", | |
26 | + "_id": "ip@0.3.3", | |
27 | + "_shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4", | |
27 | 28 | "_from": "ip@latest", |
28 | - "_npmVersion": "1.4.28", | |
29 | + "_npmVersion": "2.9.0", | |
30 | + "_nodeVersion": "2.0.0", | |
29 | 31 | "_npmUser": { |
30 | 32 | "name": "indutny", |
31 | 33 | "email": "fedor@indutny.com" |
... | ... | @@ -45,9 +47,9 @@ |
45 | 47 | } |
46 | 48 | ], |
47 | 49 | "dist": { |
48 | - "shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db", | |
49 | - "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.2.tgz" | |
50 | + "shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4", | |
51 | + "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.3.tgz" | |
50 | 52 | }, |
51 | 53 | "directories": {}, |
52 | - "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.2.tgz" | |
54 | + "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz" | |
53 | 55 | } | ... | ... |