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

Reply via email to