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