00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #pragma once
00031 #ifndef __TRANSACTION_MS_H__
00032 #define __TRANSACTION_MS_H__
00033 #include "cslib/CSDefs.h"
00034
00035 class MSTrans;
00036 class MSTransactionThread;
00037
00038 class MSTransactionManager {
00039 public:
00040 MSTransactionManager(){}
00041
00042 static void startUp();
00043 static void shutDown();
00044 static void flush();
00045 static void suspend(bool do_flush = false);
00046 static void resume();
00047 static void commit();
00048 static void rollback();
00049 static void rollbackToPosition(uint32_t position);
00050
00051 #ifdef DRIZZLED
00052 static void setSavepoint(const char *savePoint);
00053 static void releaseSavepoint(const char *savePoint);
00054 static void rollbackTo(const char *savePoint);
00055 #endif
00056
00057 static void referenceBLOB(uint32_t db_id, uint32_t tab_id, uint64_t blob_id, uint64_t blob_ref_id)
00058 {
00059 logTransaction(true, db_id, tab_id, blob_id, blob_ref_id);
00060 }
00061 static void dereferenceBLOB(uint32_t db_id, uint32_t tab_id, uint64_t blob_id, uint64_t blob_ref_id)
00062 {
00063 logTransaction(false, db_id, tab_id, blob_id, blob_ref_id);
00064 }
00065
00066 static void dropDatabase(uint32_t db_id);
00067 private:
00068 static void startUpReader();
00069 static void logTransaction(bool ref, uint32_t db_id, uint32_t tab_id, uint64_t blob_id, uint64_t blob_ref_id);
00070 static MSTransactionThread *tm_Reader;
00071
00072 friend class MSTempLogThread;
00073 static MSTrans *tm_Log;
00074
00075 };
00076
00077 #endif