BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
TangoConnection.cxx
Go to the documentation of this file.
1
// -------------------------------------------------------------------------
2
// ----- TangoConnection source file -----
3
// -------------------------------------------------------------------------
4
#include "
TangoConnection.h
"
5
6
#include "
TRandom.h
"
7
8
#include <chrono>
9
#include <thread>
10
11
mapSQLServer
*
TangoConnection::mapConnection
=
nullptr
;
12
13
// ----- Constructor with connection ----------------------
14
TangoConnection::TangoConnection
(
TSQLServer
* pSQLServer)
15
{
16
tango_db_server
= pSQLServer;
17
}
18
19
TangoConnection
*
TangoConnection::OpenConnection
(
const
TString
& connect_string,
20
const
char
* db_host,
21
const
char
* db_user,
22
const
char
* db_password)
23
{
24
if
(
TangoConnection::mapConnection
==
nullptr
)
25
TangoConnection::mapConnection
=
new
mapSQLServer
();
26
27
TSQLServer
* pSQLServer =
nullptr
;
28
itSQLServer
it =
TangoConnection::mapConnection
->find(connect_string.
Data
());
29
if
(it !=
TangoConnection::mapConnection
->end())
30
pSQLServer = it->second;
31
else
{
32
// try to connect 3 times
33
for
(
int
i
= 0;
i
< 4;
i
++) {
34
pSQLServer =
TSQLServer::Connect
(connect_string, db_user, db_password);
35
if
(pSQLServer)
36
break
;
37
if
(
i
== 3) {
38
cout <<
"ERROR: database connection was not established ("
<< db_host <<
") for '"
<< db_user
39
<<
"' user"
<< endl;
40
return
nullptr
;
41
}
42
unsigned
int
random_integer =
pow
(10,
i
) +
gRandom
->Integer(
pow
(10,
i
) * 2 + 1);
43
this_thread::sleep_for(chrono::seconds(random_integer));
44
}
45
// cout<<"Server info: "<<pSQLServer->ServerInfo()<<endl;
46
47
TangoConnection::mapConnection
->insert(
pairSQLServer
(connect_string.
Data
(), pSQLServer));
48
}
49
50
return
new
TangoConnection
(pSQLServer);
51
}
52
53
// -------------------------------------------------------------------
54
TangoConnection
*
TangoConnection::Open
()
55
{
56
TString
conString =
TString::Format
(
"pgsql://%s/%s"
,
TANGO_DB_HOST
,
TANGO_DB_NAME
);
57
return
OpenConnection
(conString,
TANGO_DB_HOST
,
TANGO_DB_USERNAME
,
TANGO_DB_PASSWORD
);
58
}
59
60
// -------------------------------------------------------------------
61
TangoConnection
*
TangoConnection::Open
(
enumDBMS
database_type,
62
const
char
* strDBHost,
63
const
char
* strDBName,
64
const
char
* strUID,
65
const
char
* strPassword)
66
{
67
char
* db_type;
68
switch
(database_type) {
69
case
MySQL
:
70
db_type = (
char
*)
"mysql"
;
71
break
;
72
case
PgSQL
:
73
db_type = (
char
*)
"pgsql"
;
74
break
;
75
default
: {
76
cout <<
"ERROR: incorrect database type!"
<< endl;
77
return
nullptr
;
78
}
79
}
80
TString
conString =
TString::Format
(
"%s://%s/%s"
, db_type, strDBHost, strDBName);
81
return
OpenConnection
(conString, strDBHost, strUID, strPassword);
82
}
83
84
// -------------------------------------------------------------------
85
TangoConnection::~TangoConnection
()
86
{
87
// if (tango_db_server)
88
// delete tango_db_server;
89
}
i
int i
Definition
P4_F32vec4.h:22
TRandom.h
gRandom
R__EXTERN TRandom * gRandom
TSQLServer
TSQLServer::Connect
static TSQLServer * Connect(const char *db, const char *uid, const char *pw)
TString
TString::Data
const char * Data() const
TString::Format
static TString Format(const char *fmt,...)
TangoConnection::~TangoConnection
virtual ~TangoConnection()
Definition
TangoConnection.cxx:85
TangoConnection::OpenConnection
static TangoConnection * OpenConnection(const TString &connect_string, const char *strDBHost, const char *strUID, const char *strPassword)
Definition
TangoConnection.cxx:19
TangoConnection::enumDBMS
enumDBMS
Definition
TangoConnection.h:30
TangoConnection::MySQL
@ MySQL
Definition
TangoConnection.h:31
TangoConnection::PgSQL
@ PgSQL
Definition
TangoConnection.h:32
TangoConnection::Open
static TangoConnection * Open()
Definition
TangoConnection.cxx:54
TangoConnection::TangoConnection
TangoConnection(TSQLServer *pSQLServer)
Definition
TangoConnection.cxx:14
TangoConnection::tango_db_server
TSQLServer * tango_db_server
Definition
TangoConnection.h:51
TangoConnection::mapConnection
static mapSQLServer * mapConnection
Definition
TangoConnection.h:48
mapSQLServer
map< string, TSQLServer * > mapSQLServer
Definition
ElogConnection.h:22
TangoConnection.h
TANGO_DB_HOST
const char *const TANGO_DB_HOST
Definition
tango_db_settings.h:7
TANGO_DB_USERNAME
const char *const TANGO_DB_USERNAME
Definition
tango_db_settings.h:5
TANGO_DB_PASSWORD
const char *const TANGO_DB_PASSWORD
Definition
tango_db_settings.h:6
TANGO_DB_NAME
const char *const TANGO_DB_NAME
Definition
tango_db_settings.h:8
pow
RVec< PromoteTypes< T0, T1 > > pow(const RVec< T0 > &v, const T1 &y)
mapSQLServer
map< string, TSQLServer * > mapSQLServer
Definition
TangoConnection.h:22
itSQLServer
map< string, TSQLServer * >::iterator itSQLServer
Definition
TangoConnection.h:24
pairSQLServer
pair< string, TSQLServer * > pairSQLServer
Definition
TangoConnection.h:23
database
tango
TangoConnection.cxx
Generated on
for BmnRoot by
1.17.0