From 64ea2097548ab2ce32296ba37b13c300970966bd Mon Sep 17 00:00:00 2001 From: Darryl Pogue Date: Fri, 17 Feb 2012 23:53:53 -0800 Subject: [PATCH] Kill pnOraLib. --- Sources/Plasma/NucleusLib/CMakeLists.txt | 1 - Sources/Plasma/NucleusLib/pnOraLib/Intern.h | 51 -- Sources/Plasma/NucleusLib/pnOraLib/Pch.h | 72 --- .../Plasma/NucleusLib/pnOraLib/pnOraLib.cpp | 566 ------------------ Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h | 144 ----- 5 files changed, 834 deletions(-) delete mode 100644 Sources/Plasma/NucleusLib/pnOraLib/Intern.h delete mode 100644 Sources/Plasma/NucleusLib/pnOraLib/Pch.h delete mode 100644 Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp delete mode 100644 Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h diff --git a/Sources/Plasma/NucleusLib/CMakeLists.txt b/Sources/Plasma/NucleusLib/CMakeLists.txt index 97241390..5f4d5698 100644 --- a/Sources/Plasma/NucleusLib/CMakeLists.txt +++ b/Sources/Plasma/NucleusLib/CMakeLists.txt @@ -22,7 +22,6 @@ add_subdirectory(pnNetCli) add_subdirectory(pnNetCommon) add_subdirectory(pnNetDiag) add_subdirectory(pnNetProtocol) -#add_subdirectory(pnOraLib) # Not being used in any current sln add_subdirectory(pnProduct) add_subdirectory(pnSceneObject) add_subdirectory(pnSimpleNet) diff --git a/Sources/Plasma/NucleusLib/pnOraLib/Intern.h b/Sources/Plasma/NucleusLib/pnOraLib/Intern.h deleted file mode 100644 index 908723aa..00000000 --- a/Sources/Plasma/NucleusLib/pnOraLib/Intern.h +++ /dev/null @@ -1,51 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Intern.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_INTERN_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Intern.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_INTERN_H diff --git a/Sources/Plasma/NucleusLib/pnOraLib/Pch.h b/Sources/Plasma/NucleusLib/pnOraLib/Pch.h deleted file mode 100644 index 95ffaa14..00000000 --- a/Sources/Plasma/NucleusLib/pnOraLib/Pch.h +++ /dev/null @@ -1,72 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Pch.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_PCH_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Pch.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_PCH_H - - -// NucleusLib -#include "pnUtils/pnUtils.h" -#include "pnProduct/pnProduct.h" -#include "pnNetBase/pnNetBase.h" -#include "pnAsyncCore/pnAsyncCore.h" -#include "pnNetCli/pnNetCli.h" -#include "pnIni/pnIni.h" - -// OCCI -#define WIN32COMMON -#include "occi.h" - -// Local -#include "pnOraLib.h" -#include "Intern.h" - -// System -#include -#include diff --git a/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp b/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp deleted file mode 100644 index 50361e68..00000000 --- a/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp +++ /dev/null @@ -1,566 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp -* -***/ - -#include "Pch.h" -#pragma hdrstop - - -//#define ORACONN_TRACKING -//#define ORASTMT_TRACKING - -#ifdef ORACONN_TRACKING -#pragma message("pnOraLib: Compiling with ORACONN_TRACKING") -#endif -#ifdef ORASTMT_TRACKING -#pragma message("pnOraLib: Compiling with ORASTMT_TRACKING") -#endif - - -/***************************************************************************** -* -* Private -* -***/ - -struct OraInitData { - unsigned OraStmtCacheSize; - wchar_t OraUsername[128]; - wchar_t OraPassword[128]; - wchar_t OraConnectString[256]; - - OraInitData( - unsigned stmtCacheSize, - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[] - ); -}; - -struct OraEnv { - occi::Environment * occiEnv; - occi::StatelessConnectionPool * occiPool; -}; - -struct OraConnPool { - bool needReinit; - long perf[kOcciNumPerf]; - CCritSect critsect; - OraEnv oraEnv; - OraInitData * data; - - void Initialize_CS (); - void Shutdown_CS (); - void ReInitialize_CS (); - - void Initialize ( - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[], - unsigned stmtCacheSize - ); - void Shutdown (); - OraConn * GetConn (const wchar_t tag[]); - void FreeConn (OraConn *& conn); - - long GetPerf (long index); -}; - - -/***************************************************************************** -* -* Private Data -* -***/ - -static const unsigned kDefaultConnTimeoutSecs = 60 * 30; // half-hour -static const unsigned kDefaultConnsPerEnv = 10; - -enum { - kPerfOraConnCount, - kPerfOraStmtCount, - kNumPerf -}; - -static OraConnPool s_connPool; -static long s_perf[kNumPerf]; - - -/***************************************************************************** -* -* Local functions -* -***/ - -/***************************************************************************** -* -* OraInitData -* -***/ - -//============================================================================ -OraInitData::OraInitData ( - unsigned stmtCacheSize, - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[] -) { - OraStmtCacheSize = stmtCacheSize; - StrCopy(OraUsername, username, arrsize(OraUsername)); - StrCopy(OraPassword, password, arrsize(OraPassword)); - StrCopy(OraConnectString, connectString, arrsize(OraConnectString)); -} - - -/***************************************************************************** -* -* OraConnPool -* -***/ - -//============================================================================ -void OraConnPool::ReInitialize_CS () { - - Shutdown_CS(); - Initialize_CS(); - - needReinit = false; -} - -//============================================================================ -void OraConnPool::Initialize_CS () { - - ASSERT(data); - - try { - const unsigned threads = AsyncThreadTaskGetThreadCount(); - const unsigned maxConns = threads; - const unsigned minConns = 0; - const unsigned incConns = max(1, maxConns - 1); - - oraEnv.occiEnv = occi::Environment::createEnvironment( - "OCCIUTF16", - "OCCIUTF16", - occi::Environment::THREADED_MUTEXED, - nil - ); - - // Create the connection pool - oraEnv.occiPool = oraEnv.occiEnv->createStatelessConnectionPool( - data->OraUsername, - data->OraPassword, - data->OraConnectString, - maxConns, - minConns, - incConns, - occi::StatelessConnectionPool::HOMOGENEOUS - ); - - // Turn on statement caching - oraEnv.occiPool->setStmtCacheSize(data->OraStmtCacheSize); - oraEnv.occiPool->setTimeOut(kDefaultConnTimeoutSecs); - // If no connections are available, block until one becomes available - oraEnv.occiPool->setBusyOption(occi::StatelessConnectionPool::WAIT); - } - catch (exception & e) { - OraLogError(L"OraConnPool::Initialize", e); - ErrorFatal(__LINE__, __FILE__, "Failed to initialize occi connection pool"); - } -} - -//============================================================================ -void OraConnPool::Shutdown_CS () { - - if (oraEnv.occiEnv) { - try { - // If we aren't connected to oracle, then closing the connection - // pool causes oracle to make a pure virtual function call when - // closing the environment. - if (!needReinit) - oraEnv.occiEnv->terminateStatelessConnectionPool(oraEnv.occiPool, occi::StatelessConnectionPool::SPD_FORCE); - occi::Environment::terminateEnvironment(oraEnv.occiEnv); - } - catch (exception & e) { - OraLogError(L"OraConnPool::Shutdown", e); - } - oraEnv.occiEnv = nil; - oraEnv.occiPool = nil; - } -} - -//============================================================================ -void OraConnPool::Initialize ( - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[], - unsigned stmtCacheSize -) { - data = new OraInitData(stmtCacheSize, username, password, connectString); - - critsect.Enter(); - { - Initialize_CS(); - } - critsect.Leave(); -} - -//============================================================================ -void OraConnPool::Shutdown () { - - critsect.Enter(); - { - Shutdown_CS(); - } - critsect.Leave(); - - delete data; -} - -//============================================================================ -OraConn * OraConnPool::GetConn (const wchar_t tag[]) { - - OraConn * oraConn = NEWZERO(OraConn); - if (tag) - StrCopy(oraConn->tag, tag, arrsize(oraConn->tag)); - - critsect.Enter(); - for (;;) try { - if (needReinit) { - if (GetPerf(kOcciPerfBusyConns)) - // Wait for all connections to be freed by the app - // before environment reinitialization. - break; - - ReInitialize_CS(); - } - - if (!oraEnv.occiEnv) - break; - - if (nil != (oraConn->occiConn = oraEnv.occiPool->getConnection())) - oraConn->oraEnv = &oraEnv; - - break; - } - catch (exception & e) { - OraLogError(L"OraConnPool::GetConn", e); - oraConn = nil; - break; - } - critsect.Leave(); - - for (;;) { - if (!oraConn || !oraConn->occiConn) { - delete oraConn; - oraConn = nil; - LogMsg(kLogError, L"OraConnPool::GetConn: Failed to aquire a database connection"); - break; - } - - const unsigned connCount = AtomicAdd(&s_perf[kPerfOraConnCount], 1) + 1; - ref(connCount); - - #ifdef ORACONN_TRACKING - LogMsg(kLogPerf, L"OraGetConn: %u, %p, %s", connCount, oraConn, oraConn->tag); - #endif - - break; - } - - return oraConn; -} - -//============================================================================ -void OraConnPool::FreeConn (OraConn *& oraConn) { - - if (oraConn) try { - occi::Connection * occiConn = oraConn->occiConn; - occi::StatelessConnectionPool * occiPool = oraConn->oraEnv->occiPool; - - const unsigned connCount = AtomicAdd(&s_perf[kPerfOraConnCount], -1) - 1; - ref(connCount); - -#ifdef ORACONN_TRACKING - LogMsg(kLogPerf, L"OraFreeConn: %u, %p, %s", connCount, oraConn, oraConn->tag); -#endif - - delete oraConn; - - try { - occiConn->commit(); - } - catch (exception & e) { - OraLogError(L"OraConnPool::FreeConn [commit]", e); - needReinit = true; - } - - occiPool->releaseConnection(occiConn); - } - catch (exception & e) { - OraLogError(L"OraConnPool::FreeConn [release]", e); - } - - oraConn = nil; -} - -//============================================================================ -long OraConnPool::GetPerf (long index) { - - if (!oraEnv.occiEnv) - return 0; - if (!oraEnv.occiPool) - return 0; - - switch (index) { - case kOcciPerfOpenConns: return oraEnv.occiPool->getOpenConnections(); - case kOcciPerfBusyConns: return oraEnv.occiPool->getBusyConnections(); - DEFAULT_FATAL(index); - } -} - - -/***************************************************************************** -* -* Exports -* -***/ - -//============================================================================ -void OraLogError (const wchar_t sql[], const exception & e) { - - wchar_t buffer[1024]; - const char * tmp = e.what(); - - // Some exceptions we catch are actually unicode strings in a char buffer, but others aren't. - if (tmp[0] && !tmp[1]) { - const wchar_t * wtmp = (const wchar_t *)tmp; - StrCopy(buffer, wtmp, arrsize(buffer)); - } - else { - StrToUnicode(buffer, tmp, arrsize(buffer)); - } - LogMsg(kLogError, L"%s, %s", sql, buffer); -} - -//============================================================================ -void OraGetShaDigest ( - occi::Statement * oraStmt, - unsigned index, - ShaDigest * digest -) { - occi::Bytes bytes = oraStmt->getBytes(index); - const unsigned length = bytes.length(); - ASSERT(length == msizeof(ShaDigest, data)); - bytes.getBytes((uint8_t *)digest->data, length); -} - -//============================================================================ -void OraSetShaDigest ( - occi::Statement * oraStmt, - unsigned index, - const ShaDigest & digest -) { - occi::Bytes bytes((uint8_t *)&digest, sizeof(digest)); - oraStmt->setBytes(index, bytes); -} - -//============================================================================ -void OraBindString ( - occi::Statement * oraStmt, - unsigned index, - wchar_t * buffer, - unsigned chars, - ub2 * length, - sb2 * indicator -) { - oraStmt->setDataBuffer( - index, - buffer, - occi::OCCI_SQLT_STR, - chars * sizeof(buffer[0]), - length, - indicator - ); -} - -//============================================================================ -void OraBindString ( - occi::ResultSet * rs, - unsigned index, - wchar_t * buffer, - unsigned chars, - ub2 * length, - sb2 * indicator -) { - rs->setDataBuffer( - index, - buffer, - occi::OCCI_SQLT_STR, - chars * sizeof(buffer[0]), - length, - indicator - ); -} - -//============================================================================ -void OraGetUuid ( - occi::Statement * oraStmt, - unsigned index, - Uuid * uuid -) { - occi::Bytes bytes = oraStmt->getBytes(index); - if (const unsigned length = bytes.length()) { - ASSERT(length == msizeof(Uuid, data)); - uint8_t * buf = malloc(length); - bytes.getBytes(buf, length); - GuidFromHex(buf, length, uuid); - - free(buf) - } - else { - GuidClear(uuid); - } -} - -//============================================================================ -void OraSetUuid ( - occi::Statement * oraStmt, - unsigned index, - const Uuid & uuid -) { - occi::Bytes bytes((uint8_t *)&uuid, sizeof(uuid)); - oraStmt->setBytes(index, bytes); -} - -//============================================================================ -OraConn * OraGetConn (const wchar_t tag[]) { - - // grabs a cached connection if available, otherwise creates a new one on-the-fly - return s_connPool.GetConn(tag); -} - -//============================================================================ -void OraFreeConn (OraConn *& oraConn) { - - s_connPool.FreeConn(oraConn); -} - -//============================================================================ -occi::Statement * OraGetStmt ( - OraConn * oraConn, - const wchar_t sql[] -) { - occi::Statement * oraStmt = nil; - try { - // grabs a matching cached statement if available, otherwise creates a new one - oraStmt = oraConn->occiConn->createStatement(sql); - // auto-commit causes an exception to be thrown when writing blobs: "ORA-01002: fetch out of sequence" - oraStmt->setAutoCommit(false); - - const unsigned stmtCount = AtomicAdd(&s_perf[kPerfOraStmtCount], 1) + 1; - ref(stmtCount); - - #ifdef ORASTMT_TRACKING - LogMsg(kLogPerf, L"OraGetStmt: %u, %p, %s", stmtCount, oraStmt, sql); - #endif - } - catch (exception & e) { - OraLogError(L"OraGetStmt", e); - } - return oraStmt; -} - -//============================================================================ - void OraFreeStmt (occi::Statement *& oraStmt) { - if (oraStmt) { - try { - // caches the statement - oraStmt->getConnection()->terminateStatement(oraStmt); - - const unsigned stmtCount = AtomicAdd(&s_perf[kPerfOraStmtCount], -1) - 1; - ref(stmtCount); - - #ifdef ORASTMT_TRACKING - LogMsg(kLogPerf, L"OraFreeStmt: %u, %p", stmtCount, oraStmt); - #endif - } - catch (exception & e) { - OraLogError(L"OraFreeStmt", e); - } - oraStmt = nil; - } -} - -//============================================================================ -void OraInitialize ( - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[], - unsigned stmtCacheSize -) { - // Connect to the database - s_connPool.Initialize( - username, - password, - connectString, - stmtCacheSize - ); -} - -//============================================================================ -void OraShutdown () { - -} - -//============================================================================ -void OraDestroy () { - s_connPool.Shutdown(); -} - -//============================================================================ -long OraLibGetOcciPerf (unsigned index) { - return s_connPool.GetPerf(index); -} diff --git a/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h b/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h deleted file mode 100644 index 05920d80..00000000 --- a/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h +++ /dev/null @@ -1,144 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h -* -***/ - -#ifndef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_PNORALIB_H -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_PNORALIB_H - -// OCCI -#define WIN32COMMON -#include "occi.h" -using namespace oracle; -struct OraEnv; - -enum { - kOcciPerfOpenConns, - kOcciPerfBusyConns, - kOcciNumPerf -}; - -long OraLibGetOcciPerf (unsigned index); - - -struct OraConn { -// treat all fields as read-only - OraEnv * oraEnv; - occi::Connection * occiConn; - wchar_t tag[128]; -}; - - -/***************************************************************************** -* -* OraLib -* -***/ - -void OraLogError (const wchar_t sql[], const exception & e); - -void OraGetShaDigest ( - occi::Statement * oraStmt, - unsigned index, - ShaDigest * digest -); - -void OraSetShaDigest ( - occi::Statement * oraStmt, - unsigned index, - const ShaDigest & digest -); - -void OraBindString ( - occi::Statement * oraStmt, - unsigned index, - wchar_t * buffer, - unsigned chars, - ub2 * length, - sb2 * indicator -); - -void OraBindString ( - occi::ResultSet * rs, - unsigned index, - wchar_t * buffer, - unsigned chars, - ub2 * length, - sb2 * indicator -); - -void OraGetUuid ( - occi::Statement * oraStmt, - unsigned index, - Uuid * uuid -); - -void OraSetUuid ( - occi::Statement * oraStmt, - unsigned index, - const Uuid & uuid -); - -OraConn * OraGetConn (const wchar_t tag[] = nil); - -void OraFreeConn (OraConn *& oraConn); - -occi::Statement * OraGetStmt ( - OraConn * oraConn, - const wchar_t sql[] -); - -void OraFreeStmt (occi::Statement *& oraStmt); - -void OraInitialize ( - const wchar_t username[], - const wchar_t password[], - const wchar_t connectString[], - unsigned stmtCacheSize -); -void OraShutdown (); -void OraDestroy (); - -#endif // PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNORALIB_PNORALIB_H \ No newline at end of file