|
|
/*++
� 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); }
|