241 lines
5.1 KiB
C
241 lines
5.1 KiB
C
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
//
|
||
|
// File: wkspace.h
|
||
|
//
|
||
|
// Contents:
|
||
|
//
|
||
|
// History:
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
#ifndef __TLSDBWORKSPACE_H__
|
||
|
#define __TLSDBWORKSPACE_H__
|
||
|
|
||
|
#include "SrvDef.h"
|
||
|
//
|
||
|
// from TLSDb
|
||
|
//
|
||
|
#include "JBDef.h"
|
||
|
#include "JetBlue.h"
|
||
|
#include "TLSDb.h"
|
||
|
#include "backup.h"
|
||
|
#include "KPDesc.h"
|
||
|
#include "Licensed.h"
|
||
|
#include "licpack.h"
|
||
|
#include "version.h"
|
||
|
#include "workitem.h"
|
||
|
|
||
|
struct __TLSDbWorkSpace;
|
||
|
|
||
|
//
|
||
|
// Temporary define workspace to be 32
|
||
|
//
|
||
|
#define MAX_WORKSPACE 32
|
||
|
|
||
|
typedef CHandlePool<
|
||
|
struct __TlsDbWorkSpace *,
|
||
|
MAX_WORKSPACE
|
||
|
> TLSDbWorkSpacePool;
|
||
|
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
typedef struct __TlsDbWorkSpace {
|
||
|
|
||
|
// one instance for all session
|
||
|
static JBInstance g_JbInstance;
|
||
|
|
||
|
//------------------------------------------------
|
||
|
//
|
||
|
// JetBlue transaction is session based and no
|
||
|
// two thread can use same session
|
||
|
//
|
||
|
|
||
|
JBSession m_JetSession;
|
||
|
JBDatabase m_JetDatabase;
|
||
|
|
||
|
//
|
||
|
// These table should be kept open
|
||
|
//
|
||
|
LicPackTable m_LicPackTable;
|
||
|
LicensedTable m_LicensedTable;
|
||
|
|
||
|
//
|
||
|
// LicPackDesc table is used by enumeration and
|
||
|
// adding license pack open as necessary.
|
||
|
//
|
||
|
LicPackDescTable m_LicPackDescTable;
|
||
|
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
BOOL
|
||
|
BeginTransaction()
|
||
|
{
|
||
|
BOOL bSuccess;
|
||
|
|
||
|
try {
|
||
|
bSuccess = m_JetDatabase.BeginTransaction();
|
||
|
} catch( SE_Exception e ) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(e.getSeNumber());
|
||
|
}
|
||
|
catch(...) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(TLS_E_INTERNAL);
|
||
|
}
|
||
|
|
||
|
return bSuccess;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
BOOL
|
||
|
CommitTransaction()
|
||
|
{
|
||
|
BOOL bSuccess;
|
||
|
|
||
|
try {
|
||
|
bSuccess = m_JetDatabase.CommitTransaction();
|
||
|
} catch( SE_Exception e ) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(e.getSeNumber());
|
||
|
}
|
||
|
catch(...) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(TLS_E_INTERNAL);
|
||
|
}
|
||
|
|
||
|
return bSuccess;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
BOOL
|
||
|
RollbackTransaction()
|
||
|
{
|
||
|
BOOL bSuccess;
|
||
|
|
||
|
try {
|
||
|
bSuccess = m_JetDatabase.RollbackTransaction();
|
||
|
} catch( SE_Exception e ) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(e.getSeNumber());
|
||
|
}
|
||
|
catch(...) {
|
||
|
bSuccess = FALSE;
|
||
|
SetLastError(TLS_E_INTERNAL);
|
||
|
}
|
||
|
|
||
|
return bSuccess;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
void
|
||
|
Cleanup()
|
||
|
{
|
||
|
m_LicPackTable.Cleanup();
|
||
|
m_LicPackDescTable.Cleanup();
|
||
|
m_LicensedTable.Cleanup();
|
||
|
}
|
||
|
|
||
|
|
||
|
//------------------------------------------------
|
||
|
__TlsDbWorkSpace() :
|
||
|
m_JetSession(g_JbInstance),
|
||
|
m_JetDatabase(m_JetSession),
|
||
|
m_LicPackTable(m_JetDatabase),
|
||
|
m_LicPackDescTable(m_JetDatabase),
|
||
|
m_LicensedTable(m_JetDatabase)
|
||
|
/*
|
||
|
*/
|
||
|
{
|
||
|
//
|
||
|
// Force apps to call InitWorkSpace...
|
||
|
//
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------
|
||
|
~__TlsDbWorkSpace()
|
||
|
{
|
||
|
m_LicPackTable.CloseTable();
|
||
|
m_LicPackDescTable.CloseTable();
|
||
|
m_LicensedTable.CloseTable();
|
||
|
|
||
|
m_JetDatabase.CloseDatabase();
|
||
|
m_JetSession.EndSession();
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------
|
||
|
BOOL
|
||
|
InitWorkSpace(
|
||
|
BOOL bCreateIfNotExist,
|
||
|
LPCTSTR szDatabaseFile,
|
||
|
LPCTSTR szUserName=NULL,
|
||
|
LPCTSTR szPassword=NULL,
|
||
|
IN LPCTSTR szChkPointDirPath=NULL,
|
||
|
IN LPCTSTR szTempDirPath=NULL,
|
||
|
IN BOOL bUpdatable = FALSE
|
||
|
);
|
||
|
|
||
|
} TLSDbWorkSpace, *LPTLSDbWorkSpace, *PTLSDbWorkSpace;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
BOOL
|
||
|
TLSJbInstanceInit(
|
||
|
IN OUT JBInstance& jbInstance,
|
||
|
IN LPCTSTR pszChkPointDirPath,
|
||
|
IN LPCTSTR pszTempDirPath,
|
||
|
IN LPCTSTR pszLogDirPath
|
||
|
);
|
||
|
|
||
|
TLSDbWorkSpace*
|
||
|
AllocateWorkSpace(
|
||
|
DWORD dwWaitTime
|
||
|
);
|
||
|
|
||
|
void
|
||
|
ReleaseWorkSpace(
|
||
|
PTLSDbWorkSpace *p
|
||
|
);
|
||
|
|
||
|
//
|
||
|
BOOL
|
||
|
InitializeWorkSpacePool(
|
||
|
int num_workspace,
|
||
|
LPCTSTR szDatabaseFile,
|
||
|
LPCTSTR szUserName,
|
||
|
LPCTSTR szPassword,
|
||
|
LPCTSTR szChkPointDirPath,
|
||
|
LPCTSTR szTempDirPath,
|
||
|
LPCTSTR szLogDirPath,
|
||
|
BOOL bUpdatable
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
CloseWorkSpacePool();
|
||
|
|
||
|
WorkItemTable*
|
||
|
GetWorkItemStorageTable();
|
||
|
|
||
|
DWORD
|
||
|
GetNumberOfWorkSpaceHandle();
|
||
|
|
||
|
BOOL
|
||
|
TLSGetESEError(
|
||
|
const JET_ERR jetErrCode,
|
||
|
LPTSTR* pszString
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsValidAllocatedWorkspace(
|
||
|
PTLSDbWorkSpace p
|
||
|
);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif
|