⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 context.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}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 + -