~pbms-core/pbms/5.11-beta

« back to all changes in this revision

Viewing changes to src/backup_ms.h

  • Committer: Barry.Leslie at PrimeBase
  • Date: 2009-11-05 03:28:37 UTC
  • Revision ID: barry.leslie@primebase.com-20091105032837-x38lti1jsms4qr44
S3 cloud storage now works with backups. Added pbms_backup and pbms_cloud tables.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
#ifndef _BACKUP_MS_H_
30
30
#define _BACKUP_MS_H_
 
31
class MSDatabase;
 
32
 
 
33
class MSBackupInfo : public CSRefObject {
 
34
        private:
 
35
        static csWord4  gMaxInfoRef;
 
36
        static CSSyncSparseArray *gBackupInfo;
 
37
 
 
38
        friend class MSBackupTable;
 
39
        friend class MSBackup;
 
40
        
 
41
        private:        
 
42
        csWord4                 backupRefId;
 
43
        CSString                *db_name;
 
44
        csWord4                 db_id;
 
45
        time_t                  startTime;
 
46
        time_t                  completionTime;
 
47
        bool                    dump;
 
48
        bool                    isRunning;
 
49
        CSString                *backupLocation;
 
50
        csWord4                 cloudRef;
 
51
        csWord4                 cloudBackupNo;
 
52
        
 
53
public:
 
54
 
 
55
        static void startUp()
 
56
        {
 
57
                new_(gBackupInfo, CSSyncSparseArray(5));
 
58
                gMaxInfoRef = 0;
 
59
        }
 
60
        
 
61
        static void shutDown()
 
62
        {
 
63
                if (gBackupInfo) {
 
64
                        gBackupInfo->clear();
 
65
                        gBackupInfo->release();
 
66
                        gBackupInfo = NULL;
 
67
                }       
 
68
        }
 
69
 
 
70
 
 
71
        static MSBackupInfo *findBackupInfo(csWord4 backupRefId)
 
72
        {
 
73
                MSBackupInfo *info;
 
74
                enter_();
 
75
                
 
76
                lock_(gBackupInfo);
 
77
                
 
78
                info = (MSBackupInfo *) gBackupInfo->get(backupRefId);
 
79
                if (info) 
 
80
                        info->retain();
 
81
                unlock_(gBackupInfo);
 
82
                return_(info);
 
83
        }
 
84
        
 
85
        static MSBackupInfo *getBackupInfo(csWord4 backupRefId)
 
86
        {
 
87
                MSBackupInfo *info = findBackupInfo(backupRefId);
 
88
                if (!info) {
 
89
                        enter_();
 
90
                        char msg[80];
 
91
                        sprintf(msg, "Backup info with reference ID %u not found", backupRefId);
 
92
                        CSException::throwException(CS_CONTEXT, CS_ERR_GENERIC_ERROR, msg);
 
93
                        outer_();
 
94
                }
 
95
                return info;
 
96
        }
 
97
        
 
98
        
 
99
        MSBackupInfo(csWord4 id, const char *name, csWord4 db_id, time_t start, time_t end, bool isDump, const char *location, csWord4 cloudRef_arg, csWord4 cloudBackupNo_arg );
 
100
        ~MSBackupInfo();
 
101
        
 
102
        csWord4 getBackupRefId() { return backupRefId;}
 
103
        
 
104
        const char *getName(){ return db_name->getCString(); }
 
105
        
 
106
        csWord4 getDatabaseId() { return db_id;}
 
107
        
 
108
        time_t getStart(){ return startTime;}
 
109
        
 
110
        time_t getEnd(){ return completionTime;}
 
111
        
 
112
        bool isDump(){ return dump;}
 
113
        
 
114
        bool isBackupRunning(){ return isRunning;}
 
115
 
 
116
        const char *getLocation() { return (backupLocation)?backupLocation->getCString():NULL; }
 
117
                
 
118
        csWord4 getcloudRef(){ return cloudRef;}
 
119
        void setcloudRef(csWord4 no){ cloudRef = no;}
 
120
 
 
121
        csWord4 getcloudBackupNo(){ return cloudBackupNo;}
 
122
        void setcloudBackupNo(csWord4 no){ cloudBackupNo = no;}
 
123
        
 
124
        static MSBackupInfo *startDump(MSDatabase *db, csWord4 cloud_ref, csWord4 backup_no);
 
125
 
 
126
        void startBackup(MSDatabase *pbms_db);
 
127
        void backupCompleted(MSDatabase *db);
 
128
        void backupTerminated(MSDatabase *db);
 
129
};
 
130
 
31
131
 
32
132
class MSDatabase;
33
133
class MSOpenSystemTable;
50
150
        int             getStatus() { return (bu_BackupRunning)?0:bu_State;}
51
151
        csWord4 backupID() { return bu_ID;}
52
152
        
53
 
        static MSBackup* newMSBackup(CSString *backup_location, CSString *db_name, csWord4      db_id);
 
153
        static MSBackup* newMSBackup(MSBackupInfo *backup_info);
54
154
 
55
155
private:
56
156
        void completeBackup();
 
157
        
 
158
        MSBackupInfo *bu_info;
57
159
 
58
160
        CSVector        *bu_BackupList;
59
161
        CSDaemon        *bu_Compactor;
60
162
        bool            bu_BackupRunning;
61
163
        enum            {BU_RUNNING = -1, BU_COMPLETED = 0, BU_TERMINATED = 1}  bu_State; 
62
164
        
63
 
        MSDatabase *bu_Database;                // The destination database.
 
165
        MSDatabase      *bu_SourceDatabase;     // The source database.
 
166
        MSDatabase      *bu_Database;           // The destination database.
64
167
        MSOpenSystemTable *bu_dst_dump; // The source database's pbms_dump.
65
168
        MSOpenSystemTable *bu_src_dump; // The source database's pbms_dump.
66
169
        csWord8         bu_size;                        // The total size of the data to be backed up.