renamed check_for_requests to heartbeat, and made the heartbeat serve all items in the queue instead of just the latest (#36)

This commit is contained in:
Micah Lee 2014-06-11 19:55:28 -04:00
parent 68bba73a8c
commit 1cc817db3c
3 changed files with 36 additions and 26 deletions

View File

@ -29,13 +29,13 @@ REQUEST_LOAD = 0
REQUEST_DOWNLOAD = 1
REQUEST_PROGRESS = 2
REQUEST_OTHER = 3
request_q = Queue.Queue()
q = Queue.Queue()
download_count = 0
def add_request(type, path, data=None):
global request_q
request_q.put({
global q
q.put({
'type': type,
'path': path,
'data': data
@ -50,7 +50,7 @@ def index():
@app.route("/{0}/download".format(slug))
def download():
global filename, filesize, request_q, download_count
global filename, filesize, q, download_count
global REQUEST_DOWNLOAD, REQUEST_PROGRESS
# each download has a unique id

View File

@ -25,24 +25,28 @@ $(function(){
var REQUEST_OTHER = 3;
function check_for_requests() {
$.ajax({
url: '/check_for_requests',
url: '/heartbeat',
success: function(data, textStatus, jqXHR){
if(data != '') {
var r = JSON.parse(data);
if(r.type == REQUEST_LOAD) {
update($('<span>').addClass('weblog').html(onionshare.strings['download_page_loaded']));
} else if(r.type == REQUEST_DOWNLOAD) {
var $download = $('<span>')
.attr('id', 'download-'+r.data.id)
.addClass('weblog').html(onionshare.strings['download_started'])
.append($('<span>').addClass('progress'));
update($download);
} else if(r.type == REQUEST_PROGRESS) {
var percent = Math.floor((r.data.bytes / onionshare.filesize) * 100);
$('#download-'+r.data.id+' .progress').html(' '+human_readable_filesize(r.data.bytes)+', '+percent+'%');
} else {
if(r.path != '/favicon.ico')
update($('<span>').addClass('weblog-error').html(onionshare.strings['other_page_loaded']+': '+r.path));
var events = JSON.parse(data);
for(var i=0; i<events.length; i++) {
var r = events[i];
if(r.type == REQUEST_LOAD) {
update($('<span>').addClass('weblog').html(onionshare.strings['download_page_loaded']));
} else if(r.type == REQUEST_DOWNLOAD) {
var $download = $('<span>')
.attr('id', 'download-'+r.data.id)
.addClass('weblog').html(onionshare.strings['download_started'])
.append($('<span>').addClass('progress'));
update($download);
} else if(r.type == REQUEST_PROGRESS) {
var percent = Math.floor((r.data.bytes / onionshare.filesize) * 100);
$('#download-'+r.data.id+' .progress').html(' '+human_readable_filesize(r.data.bytes)+', '+percent+'%');
} else {
if(r.path != '/favicon.ico')
update($('<span>').addClass('weblog-error').html(onionshare.strings['other_page_loaded']+': '+r.path));
}
}
}

View File

@ -51,12 +51,18 @@ def copy_url():
clipboard.set_text(url)
return ''
@app.route("/check_for_requests")
@app.route("/heartbeat")
def check_for_requests():
global onionshare
try:
r = onionshare.request_q.get(False)
return json.dumps(r)
except onionshare.Queue.Empty:
return ''
events = []
done = False
while not done:
try:
r = onionshare.q.get(False)
events.append(r)
except onionshare.Queue.Empty:
done = True
return json.dumps(events)