46 : m_ProtocolVersion(0)
76 return "unknown_driver";
128 if (
m_UserName.empty() && !TDbapi_CanUseKerberos::GetDefault()) {
138 if (
m_Password.empty() && !TDbapi_CanUseKerberos::GetDefault()) {
205 const string& srv_name,
206 const string& user_name,
207 const string& passwd,
210 const string& pool_name)
228 reusable ?
"true" :
"false"
247 string::size_type pos = 0;
248 string::size_type cur_pos = 0;
251 pos = params.find_first_of(
":", pos);
252 if (pos == string::npos) {
263 pos = params.find(
"//", cur_pos);
264 if (pos == string::npos) {
268 if (pos != cur_pos) {
269 string driver_name = params.substr(cur_pos, pos - cur_pos - 1);
276 pos = params.find_first_of(
":@", cur_pos);
277 if (pos != string::npos) {
278 string user_name = params.substr(cur_pos, pos - cur_pos);
280 if (params[pos] ==
'@') {
290 pos = params.find_first_of(
"@", cur_pos);
292 if (pos != string::npos) {
296 string password = params.substr(cur_pos, pos - cur_pos);
318 string::size_type pos = 0;
319 pos = params.find_first_of(
":/?", cur_pos);
321 if (pos != string::npos) {
323 string server_name = params.substr(cur_pos, pos - cur_pos);
326 switch (params[pos]) {
329 pos = params.find_first_of(
"/?", cur_pos);
331 if (pos != string::npos) {
332 string port = params.substr(cur_pos, pos - cur_pos);
335 switch (params[pos]) {
342 param_pairs = params.substr(cur_pos);
346 string port = params.substr(cur_pos);
357 param_pairs = params.substr(cur_pos);
364 string server_name = params.substr(cur_pos);
372 string::size_type pos = 0;
375 pos = params.find_first_of(
"?", cur_pos);
376 if (pos != string::npos) {
377 string database_name = params.substr(cur_pos, pos - cur_pos);
382 param_pairs = params.substr(cur_pos);
384 string database_name = params.substr(cur_pos);
392 vector<string> arr_param;
398 ITERATE(vector<string>, it, arr_param) {
414 vector<string> arr_param;
420 ITERATE(vector<string>, it, arr_param) {
471 const string& server_name_env,
472 const string& database_name_env,
473 const string& user_name_env,
474 const string& passwd_env
477 , m_ServerNameEnv(server_name_env)
478 , m_DatabaseNameEnv(database_name_env)
479 , m_UserNameEnv(user_name_env)
480 , m_PasswordEnv(passwd_env)
493 if (!
value.empty()) {
504 if (!
value.empty()) {
515 if (!
value.empty()) {
526 if (!
value.empty()) {
570 vector<string> arr_param;
571 enum EState {eInitial, eKeyRead, eValueRead};
573 bool tli_format =
false;
576 if (line[0] ==
'#' || line.empty()) {
578 }
else if (line[0] ==
'\t') {
579 if (
state == eKeyRead) {
587 const string tli_str = arr_param[arr_param.size() - 1];
588 host_str = tli_str.substr(10 - 1, 8);
589 port_str = tli_str.substr(6 - 1, 4);
591 host_str = arr_param[arr_param.size() - 2];
592 port_str = arr_param[arr_param.size() - 1];
602 if (
state == eInitial) {
612 if (
state == eValueRead) {
614 unsigned char*
b = (
unsigned char*) &host;
616 if (!host_str.empty() && !port_str.empty()) {
655 switch(it->second.m_Port) {
676 return it->second.m_Host;
688 return it->second.m_Port;
virtual ~CDBDefaultConnParams(void)
CDBDefaultConnParams(const string &srv_name, const string &user_name, const string &passwd, I_DriverContext::TConnectionMode mode=0, bool reusable=false, const string &pool_name=kEmptyStr)
void SetParam(const string &key, const string &value)
CDBEnvConnParams(const CDBConnParams &other, const string &server_name_env="DBAPI_SERVER", const string &database_name_env="DBAPI_DATABASE", const string &user_name_env="DBAPI_USER", const string &passwd_env="DBAPI_PASSWORD")
virtual string GetPassword(void) const
const CNcbiEnvironment m_Env
virtual string GetUserName(void) const
virtual ~CDBEnvConnParams(void)
virtual string GetDatabaseName(void) const
virtual string GetServerName(void) const
virtual Uint4 GetHost(void) const
virtual ~CDBInterfacesFileConnParams(void)
CDBInterfacesFileConnParams(const CDBConnParams &other, const string &file=kEmptyStr)
virtual EServerType GetServerType(void) const
virtual Uint2 GetPort(void) const
void ParseParamPairs(const string ¶m_pairs, size_t cur_pos)
virtual ~CDBUriConnParams(void)
void ParseServer(const string ¶ms, size_t cur_pos)
void ParseSlash(const string ¶ms, size_t cur_pos)
CDBUriConnParams(const string ¶ms)
void SetPassword(const string &passwd)
virtual ~CDB_ODBC_ConnParams(void)
void SetPassword(const string &passwd)
CDB_ODBC_ConnParams(const string ¶ms)
void x_MapPairToParam(const string &key, const string &value)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
virtual string GetPassword(void) const
virtual Uint4 GetHost(void) const
void SetDriverName(const string &name)
virtual string GetDatabaseName(void) const
virtual string GetUserName(void) const
virtual string GetDriverName(void) const
virtual EEncoding GetEncoding(void) const
virtual Uint2 GetPort(void) const
virtual EServerType GetServerType(void) const
TUnclassifiedParamMap m_UnclassifiedParamMap
virtual Uint4 GetProtocolVersion(void) const
CRef< IConnValidator > m_Validator
virtual ~CDBConnParamsBase(void)
void SetUserName(const string &name)
virtual const CDBHandlerStack & GetOpeningMsgHandlers(void) const
virtual string GetParam(const string &key) const
Parameters, which are not listed above explicitly, should be retrieved via SetParam() method.
void SetParam(const string &key, const string &value)
CDBHandlerStack m_OpeningMsgHandlers
void SetServerName(const string &name)
void SetPassword(const string &passwd)
virtual CRef< IConnValidator > GetConnValidator(void) const
virtual string GetServerName(void) const
void SetDatabaseName(const string &name)
container_type::const_iterator const_iterator
const_iterator end() const
const_iterator find(const key_type &key) const
NCBI_PARAM_DEF(bool, dbapi, can_use_kerberos, false)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define DATABASE_DRIVER_ERROR(message, err_code)
virtual EServerType GetServerType(void) const
const CDBConnParams & GetThis(void) const
virtual string GetDatabaseName(void) const
virtual string GetServerName(void) const =0
virtual Uint4 GetHost(void) const
virtual string GetDriverName(void) const =0
virtual Uint2 GetPort(void) const
virtual string GetPassword(void) const
virtual string GetUserName(void) const
virtual string GetServerName(void) const
const string & Get(const string &name, bool *found=NULL) const
Get environment value by name.
uint32_t Uint4
4-byte (32-bit) unsigned integer
uint16_t Uint2
2-byte (16-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CNcbiIstream & NcbiGetlineEOL(CNcbiIstream &is, string &str, string::size_type *count=NULL)
Read from "is" to "str" the next line (taking into account platform specifics of End-of-Line)
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate spaces in a string (in-place)
static int Compare(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Compare of a substring with another string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static bool SplitInTwo(const CTempString str, const CTempString delim, string &str1, string &str2, TSplitFlags flags=0)
Split a string into two pieces using the specified delimiters.
static unsigned int StringToUInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to unsigned int.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for equality of a substring with another string.
@ eEncoding_ISO8859_1
Note: From the point of view of the C++.
@ eNocase
Case insensitive compare.
const struct ncbi::grid::netcache::search::fields::KEY key
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...