~chase-curvedinfinity/mirthkit/trunk

« back to all changes in this revision

Viewing changes to ciga/avocado.h

  • Committer: Chase Adams
  • Date: 2009-02-24 00:20:00 UTC
  • Revision ID: curved@cig-chase-20090224002000-a5z4vv7qj6cswoid
current mirthkit version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _AVOCADO_H
 
2
#define _AVOCADO_H
 
3
 
 
4
#include "NameTable.h"
 
5
#include <sqlite3.h>
 
6
 
 
7
#define VAULT_DIR "./local/"
 
8
#define VAULT_EXT ".vault"
 
9
#define AV_QUERY_LENGTH 1024*1024*3
 
10
 
 
11
#define TABLE_CREATE "CREATE TABLE Vault (Name varchar UNIQUE, Value varchar);"
 
12
 
 
13
namespace ciga {
 
14
        NameTable<sqlite3> vaults;
 
15
        char _query[AV_QUERY_LENGTH];
 
16
        char _result[AV_QUERY_LENGTH];
 
17
        
 
18
        void _avFlush() 
 
19
        {
 
20
                List<sqlite3> vaultList;
 
21
                vaults.append(&vaultList);
 
22
                sqlite3* vault = vaultList.popFront();
 
23
                while(vault)
 
24
                {
 
25
                        sqlite3_close(vault);
 
26
                        vault = vaultList.popFront();
 
27
                }
 
28
                vaults.clear();
 
29
        }
 
30
        void store(char* vaultName, char* name, char* value)
 
31
        {
 
32
                sqlite3** vault = vaults.get(vaultName);
 
33
                if(!*vault)
 
34
                {
 
35
                        char pathName[1024*32];
 
36
                        
 
37
                        //sprintf(pathName,"%s%s%s",VAULT_DIR,vaultName,VAULT_EXT);
 
38
                        
 
39
                        #ifdef LINUX_32
 
40
                        char* homestr = getenv("HOME");
 
41
                        sprintf(pathName,"%s/.mirthkit/%s%s",homestr,vaultName,VAULT_EXT);
 
42
                        #endif
 
43
                        
 
44
                        #ifdef WIN32
 
45
                        char* homestr = getenv("HOMEPATH");
 
46
                        sprintf(pathName,"%s/MirthKit/%s%s",homestr,vaultName,VAULT_EXT);
 
47
                        #endif
 
48
                        
 
49
                        #ifdef MAC_OSX
 
50
                        char* homestr = getenv("HOME");
 
51
                        sprintf(pathName,"%s/.mirthkit/%s%s",homestr,vaultName,VAULT_EXT);
 
52
                        #endif
 
53
                        
 
54
                        sqlite3_open(pathName,vault);
 
55
                        sqlite3_exec(*vault,TABLE_CREATE,0,0,0);
 
56
                }
 
57
                sprintf(_query,"REPLACE INTO Vault (Name,Value) VALUES ('%s','%s');",name,value);
 
58
                sqlite3_exec(*vault,_query,0,0,0);
 
59
        }
 
60
        
 
61
        int _avCallback(void* used,int numColumns,char** columns, char** columnNames)
 
62
        {
 
63
                *((bool*)used) = true;
 
64
                strcpy(_result,columns[0]);
 
65
                return 0;
 
66
        }
 
67
        
 
68
        char* retrieve(char* vaultName, char* name)
 
69
        {
 
70
                sqlite3** vault = vaults.get(vaultName);
 
71
                if(!*vault)
 
72
                {
 
73
                        char pathName[1024*32];
 
74
                        
 
75
                        //sprintf(pathName,"%s%s%s",VAULT_DIR,vaultName,VAULT_EXT);
 
76
                        
 
77
                        #ifdef LINUX_32
 
78
                        char* homestr = getenv("HOME");
 
79
                        sprintf(pathName,"%s/.mirthkit/%s%s",homestr,vaultName,VAULT_EXT);
 
80
                        #endif
 
81
                        
 
82
                        #ifdef WIN32
 
83
                        char* homestr = getenv("HOMEPATH");
 
84
                        sprintf(pathName,"%s/MirthKit/%s%s",homestr,vaultName,VAULT_EXT);
 
85
                        #endif
 
86
                        
 
87
                        #ifdef MAC_OSX
 
88
                        char* homestr = getenv("HOME");
 
89
                        sprintf(pathName,"%s/.mirthkit/%s%s",homestr,vaultName,VAULT_EXT);
 
90
                        #endif
 
91
                        
 
92
                        sqlite3_open(pathName,vault);
 
93
                        if(sqlite3_exec(*vault,TABLE_CREATE,0,0,0)==SQLITE_OK) return 0;
 
94
                }
 
95
                char* error;
 
96
                sprintf(_query,"SELECT Value FROM Vault WHERE Name = '%s';",name);
 
97
                bool used = false;
 
98
                sqlite3_exec(*vault,_query,_avCallback,&used,0);
 
99
                if(!used) return 0;
 
100
                return _result;
 
101
        }
 
102
}
 
103
 
 
104
#endif /* _AVOCADO_H */