taskrambler  v0.1.8
Web server and task management solution.
storage/storage.h File Reference
#include <gdbm.h>
#include <sys/types.h>
#include "class.h"
+ Include dependency graph for storage/storage.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  StoragePutResult { SPR_OK = 0, SPR_READ_ONLY = 1, SPR_EXISTS = 2, SPR_UNKNOWN = -1 }
 

Functions

 CLASS (Storage)
 
StoragePutResult storagePut (Storage, char *, size_t, char *, size_t)
 
StoragePutResult storageUpdate (Storage, char *, size_t, char *, size_t)
 
void storageGet (Storage, char *, size_t, char **, size_t *)
 
int storageDelete (Storage, char *, size_t)
 

Detailed Description

Author
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/.

Definition in file storage/storage.h.

Enumeration Type Documentation

Enumerator
SPR_OK 
SPR_READ_ONLY 
SPR_EXISTS 
SPR_UNKNOWN 

Definition at line 32 of file storage/storage.h.

Function Documentation

CLASS ( Storage  )

Definition at line 40 of file storage/storage.h.

40  {
41  GDBM_FILE gdbm;
42  char * db_name;
43 };
int storageDelete ( Storage  ,
char *  ,
size_t   
)

Definition at line 34 of file storage/delete.c.

References FALSE, and TRUE.

Referenced by applicationCreateUser().

35 {
36  datum key = {_key, nkey};
37 
38  switch (gdbm_delete(this->gdbm, key)) {
39  case 0:
40  return TRUE;
41  case -1:
42  default:
43  return FALSE;
44  }
45 
46  return FALSE;
47 }
#define FALSE
Definition: commons.h:28
#define TRUE
Definition: commons.h:27

+ Here is the caller graph for this function:

void storageGet ( Storage  ,
char *  ,
size_t  ,
char **  ,
size_t *   
)

Definition at line 34 of file storage/get.c.

References MEM_FREE, and memMalloc().

Referenced by applicationGetUser(), applicationLogin(), and authStorageAuthenticate().

38 {
39  char * key = memMalloc(nkey);
40  datum gdbm_key = {key, nkey};
41  datum value;
42 
43  if (NULL == this) {
44  *data = NULL;
45  *ndata = 0;
46  }
47 
48  memcpy(key, _key, nkey);
49  value = gdbm_fetch(this->gdbm, gdbm_key);
50  MEM_FREE(key);
51 
52  if (NULL != value.dptr) {
53  *ndata = value.dsize;
54  *data = memMalloc(value.dsize);
55  memcpy(*data, value.dptr, value.dsize);
56 
57  free(value.dptr);
58  } else {
59  *data = NULL;
60  *ndata = 0;
61  }
62 }
#define MEM_FREE(seg)
Definition: memory.h:28
void * memMalloc(size_t)
Definition: memory.c:783

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

StoragePutResult storagePut ( Storage  ,
char *  ,
size_t  ,
char *  ,
size_t   
)

Definition at line 34 of file storage/put.c.

References SPR_EXISTS, SPR_OK, SPR_READ_ONLY, and SPR_UNKNOWN.

Referenced by applicationCreateUser(), and applicationLogin().

35 {
36  datum key = {_key, nkey};
37  datum value = {data, ndata};
38 
39  switch (gdbm_store(this->gdbm, key, value, GDBM_INSERT)) {
40  case 0:
41  return SPR_OK;
42  case 1:
43  return SPR_EXISTS;
44  case -1:
45  return SPR_READ_ONLY;
46  default:
47  return SPR_UNKNOWN;
48  }
49 
50  return SPR_UNKNOWN;
51 }

+ Here is the caller graph for this function:

StoragePutResult storageUpdate ( Storage  ,
char *  ,
size_t  ,
char *  ,
size_t   
)

Definition at line 33 of file storage/update.c.

References SPR_OK, SPR_READ_ONLY, and SPR_UNKNOWN.

Referenced by applicationUpdatePassword(), and applicationUpdateUser().

39 {
40  datum key = {_key, nkey};
41  datum value = {data, ndata};
42 
43  switch (gdbm_store(this->gdbm, key, value, GDBM_REPLACE)) {
44  case 0:
45  return SPR_OK;
46  case -1:
47  return SPR_READ_ONLY;
48  default:
49  return SPR_UNKNOWN;
50  }
51 
52  return SPR_UNKNOWN;
53 }

+ Here is the caller graph for this function: