You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
4.4 KiB
249 lines
4.4 KiB
/*++
|
|
|
|
© 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);
|
|
}
|
|
|
|
|