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