windows-nt/Source/XPSP1/NT/base/fs/hsm/idb/wsbdbses.cpp
2020-09-26 16:20:57 +08:00

250 lines
4.2 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
© 1998 Seagate Software, Inc. All rights reserved.
Module Name:
Wsbdbses.cpp
Abstract:
The CWsbDbSession class
Author:
Ron White [ronw] 20-Jun-1997
Revision History:
--*/
#include "stdafx.h"
#include "wsbdbsys.h"
#include "wsbdbses.h"
static USHORT iCountSes = 0; // Count of existing objects
HRESULT
CWsbDbSession::FinalConstruct(
void
)
/*++
Implements:
CComObjectRoot::FinalConstruct
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::FinalConstruct"), OLESTR("") );
m_SessionId = JET_sesidNil;
iCountSes++;
WsbTraceOut(OLESTR("CWsbDbSession::FinalConstruct"), OLESTR("hr =<%ls>, Count is <%d>"),
WsbHrAsString(hr), iCountSes);
return(hr);
}
void
CWsbDbSession::FinalRelease(
void
)
/*++
Implements:
CComObjectRoot::FinalRelease
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::FinalRelease"), OLESTR(""));
try {
JET_ERR jstat;
WsbTrace(OLESTR("CWsbDbSession::FinalRelease, SessionId = %p\n"), (LONG_PTR)m_SessionId);
if (JET_sesidNil != m_SessionId) {
jstat = JetEndSession(m_SessionId, 0);
WsbAffirmHr(jet_error(jstat));
m_SessionId = JET_sesidNil;
}
} WsbCatch(hr);
iCountSes--;
WsbTraceOut(OLESTR("CWsbDbSession::FinalRelease"), OLESTR("hr =<%ls>, Count is <%d>"),
WsbHrAsString(hr), iCountSes);
}
HRESULT
CWsbDbSession::Init(
JET_INSTANCE *pInstance
)
/*++
Implements:
IWsbDbSessionPriv::Init
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::Init"), OLESTR("") );
try {
JET_ERR jstat;
// Create the Jet session here instead of in FinalConstract
// because we need the Jet instance
WsbAffirm(NULL != pInstance, E_POINTER);
WsbTrace(OLESTR("CWsbDbSession::Init, calling JetBeginSession, JetInstance = %p\n"),
(LONG_PTR)*pInstance );
jstat = JetBeginSession(*pInstance, &m_SessionId, NULL, NULL);
WsbTrace(OLESTR("CWsbDbSession::FinalConstruct, SessionId = %p\n"), (LONG_PTR)m_SessionId);
WsbAffirmHr(jet_error(jstat));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbDbSession::Init"), OLESTR("hr =<%ls>"), WsbHrAsString(hr));
return(hr);
}
HRESULT
CWsbDbSession::GetJetId(
JET_SESID* pSessionId
)
/*++
Implements:
IWsbDbSessionPriv::GetJetId
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::GetJetId"), OLESTR("") );
*pSessionId = m_SessionId;
WsbTraceOut(OLESTR("CWsbDbSession::GetJetId"), OLESTR("hr =<%ls>, Id = %lx"),
WsbHrAsString(hr), *pSessionId);
return(hr);
}
HRESULT
CWsbDbSession::TransactionBegin(
void
)
/*++
Implements:
IWsbDbSession::TransactionBegin
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::TransactionBegin"), OLESTR(""));
try {
JET_ERR jstat;
jstat = JetBeginTransaction(m_SessionId);
WsbAffirmHr(jet_error(jstat));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbDbSession::TransactionBegin"), OLESTR("hr =<%ls>"), WsbHrAsString(hr));
return(hr);
}
HRESULT
CWsbDbSession::TransactionCancel(
void
)
/*++
Implements:
IWsbDbSession::TransactionCancel
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::TransactionCancel"), OLESTR(""));
try {
JET_ERR jstat;
jstat = JetRollback(m_SessionId, 0);
WsbAffirmHr(jet_error(jstat));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbDbSession::TransactionCancel"), OLESTR("hr =<%ls>"), WsbHrAsString(hr));
return(hr);
}
HRESULT
CWsbDbSession::TransactionEnd(
void
)
/*++
Implements:
IWsbDbSession::TransactionEnd
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbDbSession::TransactionEnd"), OLESTR(""));
try {
JET_ERR jstat;
jstat = JetCommitTransaction(m_SessionId, 0);
WsbAffirmHr(jet_error(jstat));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbDbSession::TransactionEnd"), OLESTR("hr =<%ls>"), WsbHrAsString(hr));
return(hr);
}