📄 context.cpp
字号:
}int CDBLibContext::DBLIB_dberr_handler(DBPROCESS* dblink, int severity, int dberr, int /*oserr*/, const string& dberrstr, const string& /*oserrstr*/){ CDBL_Connection* link = dblink ? reinterpret_cast<CDBL_Connection*> (dbgetuserdata(dblink)) : 0; CDBHandlerStack* hs = link ? &link->m_MsgHandlers : &m_pDBLibContext->m_CntxHandlers; switch (dberr) { case SYBETIME: case SYBEFCON: case SYBECONN: { CDB_TimeoutEx to(dberr, "dblib", dberrstr); hs->PostMsg(&to); } return INT_TIMEOUT; default: break; } switch (severity) { case EXINFO: case EXUSER: { CDB_ClientEx info(eDB_Info, dberr, "dblib", dberrstr); hs->PostMsg(&info); } break; case EXNONFATAL: case EXCONVERSION: case EXSERVER: case EXPROGRAM: { CDB_ClientEx err(eDB_Error, dberr, "dblib", dberrstr); hs->PostMsg(&err); } break; case EXTIME: { CDB_TimeoutEx to(dberr, "dblib", dberrstr); hs->PostMsg(&to); } return INT_TIMEOUT; default: { CDB_ClientEx ftl(eDB_Fatal, dberr, "dblib", dberrstr); hs->PostMsg(&ftl); } break; } return INT_CANCEL;}void CDBLibContext::DBLIB_dbmsg_handler(DBPROCESS* dblink, DBINT msgno, int /*msgstate*/, int severity, const string& msgtxt, const string& srvname, const string& procname, int line){ if (msgno == 5701 || msgno == 5703) return; CDBL_Connection* link = dblink ? reinterpret_cast<CDBL_Connection*>(dbgetuserdata(dblink)) : 0; CDBHandlerStack* hs = link ? &link->m_MsgHandlers : &m_pDBLibContext->m_CntxHandlers; if (msgno == 1205/*DEADLOCK*/) { CDB_DeadlockEx dl(srvname, msgtxt); hs->PostMsg(&dl); } else { EDB_Severity sev = severity < 10 ? eDB_Info : severity == 10 ? eDB_Warning : severity < 16 ? eDB_Error : severity > 16 ? eDB_Fatal : eDB_Unknown; if (!procname.empty()) { CDB_RPCEx rpc(sev, msgno, srvname, msgtxt, procname, line); hs->PostMsg(&rpc); } else { CDB_DSEx m(sev, msgno, srvname, msgtxt); hs->PostMsg(&m); } }}DBPROCESS* CDBLibContext::x_ConnectToServer(const string& srv_name, const string& user_name, const string& passwd, TConnectionMode mode){ if (!m_HostName.empty()) DBSETLHOST(m_Login, (char*) m_HostName.c_str()); if (m_PacketSize > 0) DBSETLPACKET(m_Login, m_PacketSize); if (DBSETLAPP (m_Login, (char*) m_AppName.c_str()) != SUCCEED || DBSETLUSER(m_Login, (char*) user_name.c_str()) != SUCCEED || DBSETLPWD (m_Login, (char*) passwd.c_str()) != SUCCEED) return 0; if (mode & fBcpIn) BCP_SETL(m_Login, TRUE);#ifndef MS_DBLIB_IN_USE if (mode & fPasswordEncrypted) DBSETLENCRYPT(m_Login, TRUE);#endif return dbopen(m_Login, (char*) srv_name.c_str());}///////////////////////////////////////////////////////////////////////// Driver manager related functions//#ifndef MS_DBLIB_IN_USEI_DriverContext* DBLIB_CreateContext(map<string,string>* attr = 0){ DBINT version= DBVERSION_46; if(attr) { string vers= (*attr)["version"]; if(vers.find("46") != string::npos) version= DBVERSION_46; else if(vers.find("100") != string::npos) version= DBVERSION_100; } CDBLibContext* cntx= new CDBLibContext(version); if(cntx && attr) { string page_size= (*attr)["packet"]; if(!page_size.empty()) { int s= atoi(page_size.c_str()); cntx->DBLIB_SetPacketSize(s); } } return cntx;}void DBAPI_RegisterDriver_DBLIB(I_DriverMgr& mgr){ mgr.RegisterDriver("dblib", DBLIB_CreateContext);}extern "C" { NCBI_DBAPIDRIVER_DBLIB_EXPORT void* DBAPI_E_dblib() { return (void*)DBAPI_RegisterDriver_DBLIB; }}#elseI_DriverContext* MSDBLIB_CreateContext(map<string,string>* attr = 0){ DBINT version= DBVERSION_46; return new CDBLibContext(version);}void DBAPI_RegisterDriver_MSDBLIB(I_DriverMgr& mgr){ mgr.RegisterDriver("msdblib", MSDBLIB_CreateContext);}extern "C" { NCBI_DBAPIDRIVER_MSDBLIB_EXPORT void* DBAPI_E_msdblib() { return (void*)DBAPI_RegisterDriver_MSDBLIB; }}#endifEND_NCBI_SCOPE/* * =========================================================================== * $Log: context.cpp,v $ * Revision 1000.4 2004/06/16 17:20:27 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.31 * * Revision 1.31 2004/06/16 16:08:51 ivanov * Added export specifier for DBAPI_E_dblib() * * Revision 1.30 2004/05/17 21:12:41 gorelenk * Added include of PCH ncbi_pch.hpp * * Revision 1.29 2004/04/08 12:18:35 ivanov * Fixed name of export specifier for DBAPI_E_msdblib() * * Revision 1.28 2004/04/07 13:41:47 gorelenk * Added export prefix to implementations of DBAPI_E_* functions. * * Revision 1.27 2003/11/14 20:46:21 soussov * implements DoNotConnect mode * * Revision 1.26 2003/10/27 17:00:29 soussov * adds code to prevent the return of broken connection from the pool * * Revision 1.25 2003/08/28 19:54:36 soussov * allowes print messages go to handler * * Revision 1.24 2003/07/21 22:00:47 soussov * fixes bug whith pool name mismatch in Connect() * * Revision 1.23 2003/07/17 20:46:02 soussov * connections pool improvements * * Revision 1.22 2003/04/18 20:26:39 soussov * fixes typo in Connect for reusable connection with specified connection pool * * Revision 1.21 2003/04/01 21:50:26 soussov * new attribute 'packet=XXX' (where XXX is a packet size) added to DBLIB_CreateContext * * Revision 1.20 2002/12/20 17:56:33 soussov * renames the members of ECapability enum * * Revision 1.19 2002/09/19 20:05:43 vasilche * Safe initialization of static mutexes * * Revision 1.18 2002/07/10 15:47:46 soussov * fixed typo in DBAPI_RegisterDriver_MSDBLIB * * Revision 1.17 2002/07/09 17:01:53 soussov * the register functions for msdblib was renamed * * Revision 1.16 2002/07/02 16:05:49 soussov * splitting Sybase dblib and MS dblib * * Revision 1.15 2002/06/19 15:02:03 soussov * changes default version from unknown to 46 * * Revision 1.14 2002/06/17 21:26:32 soussov * dbsetversion added * * Revision 1.13 2002/04/19 15:05:50 soussov * adds static mutex to Connect * * Revision 1.12 2002/04/12 22:13:09 soussov * mutex protection for contex constructor added * * Revision 1.11 2002/03/26 15:37:52 soussov * new image/text operations added * * Revision 1.10 2002/02/26 17:53:25 sapojnik * Removed blob size limits for MS SQL * * Revision 1.9 2002/01/17 22:12:47 soussov * changes driver registration * * Revision 1.8 2002/01/15 15:45:50 sapojnik * Use DBVERSION_46/100 constants only ifndef NCBI_OS_MSWIN * * Revision 1.7 2002/01/11 20:25:08 soussov * driver manager support added * * Revision 1.6 2002/01/08 18:10:18 sapojnik * Syabse to MSSQL name translations moved to interface_p.hpp * * Revision 1.5 2002/01/03 17:01:56 sapojnik * fixing CR/LF mixup * * Revision 1.4 2002/01/03 15:46:23 sapojnik * ported to MS SQL (about 12 'ifdef NCBI_OS_MSWIN' in 6 files) * * Revision 1.3 2001/10/24 16:40:00 lavr * Comment out unused function arguments * * Revision 1.2 2001/10/22 18:38:49 soussov * sending NULL instead of emty string fixed * * Revision 1.1 2001/10/22 15:19:55 lavr * This is a major revamp (by Anton Lavrentiev, with help from Vladimir * Soussov and Denis Vakatov) of the DBAPI "driver" libs originally * written by Vladimir Soussov. The revamp follows the one of CTLib * driver, and it involved massive code shuffling and grooming, numerous * local API redesigns, adding comments and incorporating DBAPI to * the C++ Toolkit. * * =========================================================================== */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -