Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 37 additions & 58 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const port = config.get('Local.port');
const local_path = config.get('Local.path');

//setting up the database
const db = new sqlite3.Database(local_path+'/comp512.db', sqlite3.OPEN_READWRITE, (err) => {
const db = new sqlite3.Database('C:/sqlite/comp512.db', sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
Expand All @@ -38,17 +38,10 @@ const db = new sqlite3.Database(local_path+'/comp512.db', sqlite3.OPEN_READWRITE


//creating various lists and queues for execution
//The state of the server
var currentframe= new HashMap();
var deleteJobs= new HashMap();
var activeJobs = new Queue();
var completedJobs = new Queue();
var activequeue = new Queue();
var activeclients= new HashMap();
var object = "giraffe";




//Creating storage for video files
const storage_vid = multer.diskStorage({
Expand All @@ -67,41 +60,41 @@ const storage_vid = multer.diskStorage({
});

//Creating storage for image files
const storage_pic = multer.diskStorage({
/*const storage_pic = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, local_path+'/uploads/ImageUploads')
},
filename: function (req, file, cb) {
cb(null, req.ip + '.jpeg')
}
});
});*/

//Upload functions
const upload_vid = multer({ storage: storage_vid});
const upload_pic = multer({ storage: storage_pic});
//const upload_pic = multer({ storage: storage_pic});

// upload video file
app.post('/uploadVidFile', upload_vid.single('videoFile'), (req, res) => {
myEmitter.emit('videoUploaded');
res.sendFile(__dirname + '/uploadImages.html')
activequeue.enqueue(req.ip);
myEmitter.emit('vidUploaded');
res.sendFile(__dirname + '/results.html');
});


//Event called after video uploaded
myEmitter.on('videoUploaded', () => {
/*myEmitter.on('videoUploaded', () => {
console.log('video upload complete!');
});
});*/

// upload image file
app.post('/uploadImgFile', upload_pic.single('imgFile'), (req, res) => {
/*app.post('/uploadImgFile', upload_pic.single('imgFile'), (req, res) => {
activequeue.enqueue(req.ip);
currentframe.set(req.ip, 1);
myEmitter.emit('imgUploaded');
res.render('ObjDect1',{user: "http://"+local_ip+":3000/mainimg", title: req.ip, obj: object});
});
res.sendFile(__dirname + '/results.html');
});*/

//Event called after image is uploaded
myEmitter.on('imgUploaded', () => {
myEmitter.on('vidUploaded', () => {
console.log('image upload complete!');
var extract_ip = activequeue.dequeue()
extract(extract_ip);
Expand All @@ -122,7 +115,6 @@ async function extract(extract_ip) {
output: local_path+'/uploads/Frames/'+extract_ip+'/'+extract_ip+'-%d.jpg',
fps : 20,
})
rmdir.sync(local_path+'/uploads/VideoUploads/'+ extract_ip + '.mp4');
fs.readdir(local_path+'/uploads/Frames/'+extract_ip, (err, files) => {
totalFrames = files.length;
console.log("Total number of frames: "+totalFrames);
Expand All @@ -133,31 +125,16 @@ async function extract(extract_ip) {
console.log(extract_ip + 'added');
});
});
if(deleteJobs.get(extract_ip)!=1)activeJobs.enqueue(extract_ip);
activeJobs.enqueue(extract_ip);
console.log('Active job added for '+activeJobs.peek());
console.log('video split successful')

}
catch (e) {
console.log(e);
}
}

app.get('/mainimg', function(req, res){

res.sendFile(__dirname + '/uploads/ImageUploads/' + req.ip + '.jpeg');

});

app.get('/somepage', function(req, res){
deleteJobs.set(req.ip,1);
db.each('DELETE From Jobs Where IP = ?', [req.ip], (err, row) => {
if (err) {
throw err;
}
});
res.sendFile(__dirname + '/results.html');
});

//Index page
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
Expand Down Expand Up @@ -191,47 +168,48 @@ app.get('/processor', function(req, res) {
else
{
console.log(pro_ip);
var new_ip = activeJobs.peek();
db.each('Select c_frames frme, frames tfrmes from Jobs where IP = ?', [new_ip], (err, row) => {
db.each('Select c_frames frme, frames tfrmes from Jobs where IP = ?', [activeJobs.peek()], (err, row) => {
if (err) {
throw err;
}
var frme = currentframe.get(new_ip);
currentframe.set(new_ip, frme+1);
activeclients.set(pro_ip,new_ip);
res.render('ObjDect',{user: "http://"+local_ip+":3000/process", title: new_ip, frame : frme, obj : object });
console.log(frme);
activeclients.set(pro_ip,activeJobs.peek());
if (row.frme + 1 > row.tfrmes) {
if(activeJobs.peek()==new_ip)
completedJobs.enqueue(activeJobs.dequeue());
db.each('DELETE From Jobs Where IP = ?', [new_ip], (err, row) => {
db.each('DELETE From Jobs Where IP = ?', [activeJobs.peek()], (err, row) => {
if (err) {
throw err;
}
});
if(new_ip!=null) {
db.each('Insert or Replace into Results(IP,frame) VALUES(?,0)', [new_ip], (err, row) => {
if (err) {
throw err;
}
});
}
db.each('Insert or Replace into Results(IP,frame) VALUES(?,0)', [row.ip], (err, row) => {
if (err) {
throw err;
}
});
if(activeJobs.peek()==row.ip)completedJobs.enqueue(activeJobs.dequeue());
} else {
db.each('Update Jobs SET c_frames = ? where IP = ?', [frme + 1, new_ip], (err, row) => {
db.each('Update Jobs SET c_frames = ? where IP = ?', [row.frme + 1, activeJobs.peek()], (err, row) => {
if (err) {
throw err;
}
});
}
db.each('Insert or Replace into Clients(C_IP, S_IP,frame) VALUES(?,?,?)', [req.ip,new_ip,frme], (err, row) => {
db.each('Insert or Replace into Clients(C_IP, S_IP,frame) VALUES(?,?,?)', [req.ip,activeJobs.peek(),row.frme], (err, row) => {
if (err) {
throw err;
}
});
/*res.sendFile(__dirname + '/uploads/Frames/' + activeJobs.peek() + '/' + activeJobs.peek() + '-' + row.frme + '.jpg');*/
console.log('Frame: ' + frme);
console.log('Frame: ' + row.frme);

});
db.each('Select c_frames frme, object obj from Jobs where IP = ?', [activeJobs.peek()], (err, row) => {
if (err) {
throw err;
}

res.render('ObjDect',{user: "http://"+local_ip+":3000/process", title: activeJobs.peek(), frame : row.frme});
console.log(row.frme);
});

}

});
Expand Down Expand Up @@ -331,6 +309,7 @@ app.get('/delete', function(req, res){
waiting_ip=req.ip;
rmdir.sync(local_path+'/uploads/Frames/'+waiting_ip);
rmdir.sync(local_path+'/uploads/ImageUploads/'+ waiting_ip + '.jpeg');
rmdir.sync(local_path+'/uploads/VideoUploads/'+ waiting_ip + '.mp4');
res.sendFile(__dirname + '/index.html');

});
Expand Down