LIB_EXPORT rc_t CC KNSManagerMakeConfig ( KNSManager **mgrp, KConfig* kfg ) { rc_t rc; if ( mgrp == NULL ) rc = RC ( rcNS, rcMgr, rcAllocating, rcParam, rcNull ); else { KNSManager * mgr = calloc ( 1, sizeof * mgr ); if ( mgr == NULL ) rc = RC ( rcNS, rcMgr, rcAllocating, rcMemory, rcExhausted ); else { KRefcountInit ( & mgr -> refcount, 1, "KNSManager", "init", "kns" ); mgr -> conn_timeout = MAX_CONN_LIMIT; mgr -> conn_read_timeout = MAX_CONN_READ_LIMIT; mgr -> conn_write_timeout = MAX_CONN_WRITE_LIMIT; mgr -> http_read_timeout = MAX_HTTP_READ_LIMIT; mgr -> http_write_timeout = MAX_HTTP_WRITE_LIMIT; mgr -> maxTotalWaitForReliableURLs_ms = 10 * 60 * 1000; /* 10 min */ mgr -> maxNumberOfRetriesOnFailureForReliableURLs = 10; mgr -> verbose = false; rc = KNSManagerInit (); /* platform specific init in sysmgr.c ( in unix|win etc. subdir ) */ if ( rc == 0 ) { /* the manager is not a proper singleton */ if ( kns_manager_user_agent [ 0 ] == 0 ) { ver_t version = LIBKNS_VERS; KNSManagerSetUserAgent ( mgr, PKGNAMESTR " ncbi-vdb.%V", version ); } rc = KConfigAddRef ( kfg ); if ( rc == 0 ) { mgr -> kfg = kfg; rc = HttpRetrySpecsInit ( & mgr -> retry_specs, mgr -> kfg ); if ( rc == 0 ) { KNSManagerHttpProxyInit ( mgr ); * mgrp = mgr; return 0; } KConfigRelease ( kfg ); } } free ( mgr ); } * mgrp = NULL; } return rc; }
void CVDBMgr::x_Init(void) { if ( rc_t rc = VDBManagerMakeRead(x_InitPtr(), 0) ) { *x_InitPtr() = 0; NCBI_THROW2(CSraException, eInitFailed, "Cannot open VDBManager", rc); } uint32_t sdk_ver; if ( rc_t rc = VDBManagerVersion(*this, &sdk_ver) ) { NCBI_THROW2(CSraException, eInitFailed, "Cannot get VDBManager version", rc); } CKNSManager kns_mgr(CVFSManager(*this)); CNcbiOstrstream str; CNcbiApplication* app = CNcbiApplication::Instance(); if ( app ) { str << app->GetAppName() << ": " << app->GetVersion().Print() << "; "; } #if NCBI_PACKAGE str << "Package: " << NCBI_PACKAGE_NAME << ' ' << NCBI_PACKAGE_VERSION << "; "; #endif str << "C++ "; #ifdef NCBI_PRODUCTION_VER str << NCBI_PRODUCTION_VER << "/"; #endif #ifdef NCBI_DEVELOPMENT_VER str << NCBI_DEVELOPMENT_VER; #endif string prefix = CNcbiOstrstreamToString(str); KNSManagerSetUserAgent(kns_mgr, "%s; SRA Toolkit %V", prefix.c_str(), sdk_ver); // redirect VDB log to C++ Toolkit if ( s_GetDiagHandler() ) { KLogInit(); KLogLevelSet(klogDebug); KLogLibHandlerSet(VDBLogWriter, 0); } if ( app ) { string host = app->GetConfig().GetString("CONN", "HTTP_PROXY_HOST", kEmptyStr); int port = app->GetConfig().GetInt("CONN", "HTTP_PROXY_PORT", 0); if ( !host.empty() && port != 0 ) { if ( rc_t rc = KNSManagerSetHTTPProxyPath(kns_mgr, "%s:%d", host.c_str(), port) ) { NCBI_THROW2(CSraException, eInitFailed, "Cannot set KNSManager proxy parameters", rc); } KNSManagerSetHTTPProxyEnabled(kns_mgr, true); } } }