Date: Thursday, January 19, 2006 @ 18:02:08
Author: marc
Path: /cvsroot/carob/odbsequoia/src
Modified: abstract_item.hpp (1.10 -> 1.11) connect.cpp (1.10 -> 1.11)
connect.hpp (1.6 -> 1.7)
Created ODBCConnection::connectw(...). Protected it thanks to
_PROTECT_SQLRETURN.
Made diags fields protected.
-------------------+
abstract_item.hpp | 3 --
connect.cpp | 54 +++++++++++++++++++++++++++-------------------------
connect.hpp | 10 ++++++++-
3 files changed, 39 insertions(+), 28 deletions(-)
Index: odbsequoia/src/abstract_item.hpp
diff -u odbsequoia/src/abstract_item.hpp:1.10
odbsequoia/src/abstract_item.hpp:1.11
--- odbsequoia/src/abstract_item.hpp:1.10 Thu Jan 19 17:39:36 2006
+++ odbsequoia/src/abstract_item.hpp Thu Jan 19 18:02:08 2006
@@ -101,11 +101,10 @@
virtual const std::wstring&
get_backend_diagids() const { return backend_diagids; };
-// TODO make these fields protected (implies SQLConnectW rework)
+protected:
std::wstring diagids;
std::wstring backend_diagids;
-protected:
virtual SQLRETURN
get_header_diag_fieldw(SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfoPtr,
Index: odbsequoia/src/connect.cpp
diff -u odbsequoia/src/connect.cpp:1.10 odbsequoia/src/connect.cpp:1.11
--- odbsequoia/src/connect.cpp:1.10 Thu Jan 19 17:39:36 2006
+++ odbsequoia/src/connect.cpp Thu Jan 19 18:02:08 2006
@@ -41,20 +41,32 @@
SQLRETURN
-SQLConnectW(SQLHDBC conn_hdle,
- SQLWCHAR *sqlwdsn, SQLSMALLINT dsnlen,
- SQLWCHAR *user, SQLSMALLINT userlen,
- SQLWCHAR *pass, SQLSMALLINT passlen)
+SQLConnectW(
+ SQLHDBC ConnectionHandle,
+ SQLWCHAR * ServerName, SQLSMALLINT NameLength1,
+ SQLWCHAR * UserName, SQLSMALLINT NameLength2,
+ SQLWCHAR * Authentication, SQLSMALLINT NameLength3)
{
- // TODO: make diagids field private and move this function to a new
connectw() method
-
- ODBCConnection * self_p = static_cast<ODBCConnection *>(conn_hdle);
+ ODBCConnection * self_p = static_cast<ODBCConnection *>(ConnectionHandle);
self_p->clear_diags();
+
+ _PROTECT_SQLRETURN(self_p,
+ connectw(ServerName, NameLength1,
+ UserName, NameLength2,
+ Authentication, NameLength3))
+
+}
+SQLRETURN
+ODBCConnection::connectw(SQLWCHAR *sqlwdsn, SQLSMALLINT dsnlen,
+ SQLWCHAR *user, SQLSMALLINT userlen,
+ SQLWCHAR *pass, SQLSMALLINT passlen)
+ throw (CarobException)
+{
std::wstring wide_dsn(fromSQLW(sqlwdsn, dsnlen));
- self_p->diagids += L"[";
- self_p->diagids += wide_dsn + L"]";
+ this->diagids += L"[";
+ this->diagids += wide_dsn + L"]";
char temp[MAX_VALUE_LEN];
@@ -90,28 +102,20 @@
if (!SQLGetPrivateProfileString(cdsn, BACKEND_IDS_INI,
DEFAULT_BACKEND_IDS_INI,
temp, MAX_VALUE_LEN, ODBC_INI))
return SQL_ERROR; // TODO: diags
- self_p->backend_diagids = fromString(std::string(temp));
+ this->backend_diagids = fromString(std::string(temp));
#if 0
delete[] cdsn;
#endif
- try // TODO: use _PROTECT_SQLRETURN() instead
- {
- CarobNS::ConnectionParameters
- connectionPrms(serverhost, port, vdbname,
- fromSQLW(user, userlen), fromSQLW(pass, passlen),
- DEBUG_LEVEL_DEBUG);
- self_p->carob_conn = new Connection(connectionPrms);
- // TODO: SQLWarnings -> SUCCESS_WITH_INFO
- return SQL_SUCCESS;
- }
- catch (CarobNS::CarobException& ce)
- {
- self_p->push_diag_chain(L"[FIXME: USE PROTECTOR]", ce);
- return SQL_ERROR;
- }
+ CarobNS::ConnectionParameters
+ connectionPrms(serverhost, port, vdbname,
+ fromSQLW(user, userlen), fromSQLW(pass, passlen),
+ DEBUG_LEVEL_DEBUG);
+ this->carob_conn = new Connection(connectionPrms);
+ // TODO: SQLWarnings -> SUCCESS_WITH_INFO
+ return SQL_SUCCESS;
}
Index: odbsequoia/src/connect.hpp
diff -u odbsequoia/src/connect.hpp:1.6 odbsequoia/src/connect.hpp:1.7
--- odbsequoia/src/connect.hpp:1.6 Tue Jan 17 14:23:04 2006
+++ odbsequoia/src/connect.hpp Thu Jan 19 18:02:08 2006
@@ -36,7 +36,15 @@
// TODO: rely on ConnectionParameters instead
std::wstring serverhost;
std::wstring vdbname;
- SQLRETURN AllocStmt(SQLHANDLE * OutputHandle);
+
+ SQLRETURN
+ AllocStmt(SQLHANDLE * OutputHandle);
+
+ SQLRETURN
+ connectw(SQLWCHAR *sqlwdsn, SQLSMALLINT dsnlen,
+ SQLWCHAR *user, SQLSMALLINT userlen, SQLWCHAR *pass, SQLSMALLINT
passlen)
+ throw (CarobNS::CarobException);
+
};
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits