Browse Source
now the session livetime is shown with a bar, as well as the current session id. These are updated on reload or ajax call.
master
now the session livetime is shown with a bar, as well as the current session id. These are updated on reload or ajax call.
master
8 changed files with 209 additions and 18 deletions
-
28assets/html/main.html
-
8assets/js/serverval.js
-
69assets/js/session.js
-
17assets/style/common.css
-
2include/http/response.h
-
3src/Makefile.am
-
69src/http/response/session.c
-
31src/http/worker/process.c
@ -0,0 +1,69 @@ |
|||||
|
function Session(sId) |
||||
|
{ |
||||
|
this.eSid = $(sId + " span"); |
||||
|
this.canvas = $(sId + " canvas").get(0); |
||||
|
this.context = this.canvas.getContext("2d"); |
||||
|
|
||||
|
this.id = "none" |
||||
|
this.timeout = 0; |
||||
|
this.timeleft = 0; |
||||
|
this.interval = null; |
||||
|
|
||||
|
this.draw(); |
||||
|
} |
||||
|
|
||||
|
Session.prototype.loadJSON = function(data) |
||||
|
{ |
||||
|
this.id = ("0" == data.id)? "none" : data.id; |
||||
|
this.timeout = data.timeout; |
||||
|
this.timeleft = data.timeleft; |
||||
|
|
||||
|
this.draw(); |
||||
|
if (0 < this.timeleft) |
||||
|
this.start(); |
||||
|
} |
||||
|
|
||||
|
Session.prototype.draw = function() |
||||
|
{ |
||||
|
this.eSid.empty().append(this.id); |
||||
|
|
||||
|
this.context.fillStyle = "rgb(255, 0, 0)"; |
||||
|
this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); |
||||
|
|
||||
|
this.context.fillStyle = "rgb(0, 255, 0)"; |
||||
|
this.context.fillRect(0, 0, |
||||
|
this.canvas.width / this.timeout * this.timeleft, |
||||
|
this.canvas.height); |
||||
|
} |
||||
|
|
||||
|
Session.prototype.start = function() |
||||
|
{ |
||||
|
if (null === this.interval) { |
||||
|
this.interval = setInterval($.proxy(this.process, this), 1000); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Session.prototype.process = function() |
||||
|
{ |
||||
|
if (0 >= this.timeleft) { |
||||
|
this.stop(); |
||||
|
} |
||||
|
|
||||
|
else { |
||||
|
this.timeleft--; |
||||
|
this.draw(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Session.prototype.stop = function() |
||||
|
{ |
||||
|
clearInterval(this.interval); |
||||
|
this.interval = null; |
||||
|
this.id = "none"; |
||||
|
this.timeout = 0; |
||||
|
this.timeleft = 0; |
||||
|
|
||||
|
this.draw(); |
||||
|
} |
||||
|
|
||||
|
// vim: set ts=4 sw=4:
|
||||
@ -0,0 +1,69 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright (C) 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#include <stdlib.h> |
||||
|
#include <string.h> |
||||
|
#include <stdio.h> |
||||
|
#include <time.h> |
||||
|
#include <sys/types.h> |
||||
|
|
||||
|
#include "class.h" |
||||
|
#include "interface/class.h" |
||||
|
|
||||
|
#include "http/response.h" |
||||
|
#include "http/message.h" |
||||
|
#include "http/header.h" |
||||
|
#include "session.h" |
||||
|
|
||||
|
#include "utils/memory.h" |
||||
|
|
||||
|
#define RESP_DATA "{\"id\":\"%lu\",\"timeout\":%d,\"timeleft\":%ld}" |
||||
|
|
||||
|
HttpResponse |
||||
|
httpResponseSession(Session session) |
||||
|
{ |
||||
|
char buffer[200]; |
||||
|
HttpResponse response; |
||||
|
HttpMessage message; |
||||
|
size_t nbuf; |
||||
|
|
||||
|
response = new(HttpResponse, "HTTP/1.1", 200, "OK"); |
||||
|
message = (HttpMessage)response; |
||||
|
|
||||
|
httpHeaderAdd(&(message->header), |
||||
|
new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json"))); |
||||
|
|
||||
|
message->type = HTTP_MESSAGE_BUFFERED; |
||||
|
|
||||
|
nbuf = sprintf(buffer, RESP_DATA, |
||||
|
(NULL != session)? session->id : 0, |
||||
|
(NULL != session)? SESSION_LIVETIME : 0, |
||||
|
(NULL != session)? session->livetime - time(NULL) : 0); |
||||
|
|
||||
|
message->nbody = nbuf; |
||||
|
message->body = malloc(nbuf); |
||||
|
memcpy(message->body, buffer, nbuf); |
||||
|
|
||||
|
return response; |
||||
|
} |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue