taskrambler  0.1.9
Web server and task management solution.
session.c
Go to the documentation of this file.
1 /**
2  * \file
3  *
4  * \author Georg Hopp
5  *
6  * \copyright
7  * Copyright © 2012 Georg Hopp
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #include <time.h>
24 #include <stdarg.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <stdio.h>
28 #include <sys/types.h>
29 #include <uuid/uuid.h>
30 
31 #include "session.h"
32 #include "hash.h"
33 #include "class.h"
34 
35 #include "utils/hash.h"
36 #include "utils/memory.h"
37 
38 
39 static
40 int
41 sessionCtor(void * _this, va_list * params)
42 {
43  Session this = _this;
44  uuid_t uuid;
45 
46  this->livetime = time(NULL) + SESSION_LIVETIME;
47  uuid_generate(uuid);
48  uuid_unparse(uuid, this->id);
49 
50  this->hash = sdbm((unsigned char *)this->id, 36);
51 
52  return 0;
53 }
54 
55 static
56 void
57 sessionDtor(void * _this)
58 {
59  Session this = _this;
60 
61  delete(this->user);
62 }
63 
64 static
65 unsigned long
66 sessionGetHash(void * _this)
67 {
68  Session this = _this;
69 
70  return this->hash;
71 }
72 
73 static
74 void
75 sessionHandleDouble(void * _this, void * _doub)
76 {
77 }
78 
79 INIT_IFACE(Class, sessionCtor, sessionDtor, NULL);
81 CREATE_CLASS(Session, NULL, IFACE(Class), IFACE(Hashable));
82 
83 // vim: set ts=4 sw=4:
static void sessionHandleDouble(void *_this, void *_doub)
Definition: session.c:75
unsigned long sdbm(const unsigned char *, size_t)
Definition: utils/hash.c:45
#define IFACE(name)
Definition: interface.h:34
static int sessionCtor(void *_this, va_list *params)
Definition: session.c:41
INIT_IFACE(Class, sessionCtor, sessionDtor, NULL)
static unsigned long sessionGetHash(void *_this)
Definition: session.c:66
static void sessionDtor(void *_this)
Definition: session.c:57
#define SESSION_LIVETIME
Definition: session.h:33
CREATE_CLASS(Session, NULL, IFACE(Class), IFACE(Hashable))