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