Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_45630965
zoompipeline
提交
45360d0b
zoompipeline
项目概览
weixin_45630965
/
zoompipeline
与 Fork 源项目一致
Fork自
colorEagleStdio / zoompipeline
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
zoompipeline
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
45360d0b
编写于
1月 22, 2014
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a thread to confirm every db connections periodicly.
上级
106bb87d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
75 addition
and
8 deletion
+75
-8
ZoomPipeline_FuncSvr/database/databaseresource.cpp
ZoomPipeline_FuncSvr/database/databaseresource.cpp
+45
-3
ZoomPipeline_FuncSvr/database/databaseresource.h
ZoomPipeline_FuncSvr/database/databaseresource.h
+10
-4
ZoomPipeline_FuncSvr/zpmainframe.cpp
ZoomPipeline_FuncSvr/zpmainframe.cpp
+20
-1
未找到文件。
ZoomPipeline_FuncSvr/database/databaseresource.cpp
浏览文件 @
45360d0b
...
...
@@ -4,8 +4,9 @@
#include <QSqlError>
namespace
ZPDatabase
{
DatabaseResource
::
DatabaseResource
(
QObject
*
parent
)
:
Q
Object
(
parent
)
Q
Thread
(
parent
)
{
bTerm
=
false
;
}
//!Get an database connection belong to current thread.
//!if database does not exist, it will be added using dbtype
...
...
@@ -22,7 +23,12 @@ QSqlDatabase DatabaseResource::databse(const QString & strDBName)
}
void
DatabaseResource
::
remove_connections
()
{
QMap
<
QString
,
tagConnectionPara
>
sets
=
currentDatabaseConnections
();
QMap
<
QString
,
tagConnectionPara
>
sets
;
{
QMutexLocker
locker
(
&
m_mutex_reg
);
sets
=
currentDatabaseConnections
();
}
foreach
(
QString
name
,
sets
.
keys
())
this
->
remove_connection
(
name
);
}
...
...
@@ -69,6 +75,7 @@ bool DatabaseResource::addConnection(
para
.
dbName
=
dbName
;
para
.
User
=
User
;
para
.
Pass
=
Pass
;
para
.
status
=
true
;
para
.
ExtraOptions
=
ExtraOptions
;
if
(
true
==
QSqlDatabase
::
contains
(
connName
))
...
...
@@ -107,7 +114,7 @@ bool DatabaseResource::confirmConnection (const QString & connName)
emit
evt_Message
(
msg
);
return
false
;
}
const
tagConnectionPara
&
para
=
m_dbNames
[
connName
];
tagConnectionPara
&
para
=
m_dbNames
[
connName
];
if
(
true
==
QSqlDatabase
::
contains
(
connName
)
)
{
QSqlDatabase
db
=
QSqlDatabase
::
database
(
connName
);
...
...
@@ -123,11 +130,17 @@ bool DatabaseResource::confirmConnection (const QString & connName)
db
.
setPassword
(
para
.
Pass
);
db
.
setConnectOptions
(
para
.
ExtraOptions
);
if
(
db
.
open
()
==
true
)
{
para
.
status
=
true
;
para
.
lastError
=
""
;
return
true
;
}
QSqlDatabase
::
removeDatabase
(
connName
);
msg
=
tr
(
" Connection "
)
+
connName
+
tr
(
" Can't be opened. MSG="
);
msg
+=
db
.
lastError
().
text
();
emit
evt_Message
(
msg
);
para
.
status
=
false
;
para
.
lastError
=
db
.
lastError
().
text
();
return
false
;
}
...
...
@@ -139,11 +152,40 @@ bool DatabaseResource::confirmConnection (const QString & connName)
db
.
setPassword
(
para
.
Pass
);
db
.
setConnectOptions
(
para
.
ExtraOptions
);
if
(
db
.
open
()
==
true
)
{
para
.
status
=
true
;
para
.
lastError
=
""
;
return
true
;
}
QString
msg
=
tr
(
" Connection "
)
+
connName
+
tr
(
" Can't be opened. MSG="
);
msg
+=
db
.
lastError
().
text
();
emit
evt_Message
(
msg
);
QSqlDatabase
::
removeDatabase
(
connName
);
para
.
status
=
false
;
para
.
lastError
=
db
.
lastError
().
text
();
return
false
;
}
void
DatabaseResource
::
run
()
{
while
(
bTerm
==
false
)
{
QMap
<
QString
,
tagConnectionPara
>
sets
;
{
QMutexLocker
locker
(
&
m_mutex_reg
);
sets
=
currentDatabaseConnections
();
}
foreach
(
QString
name
,
sets
.
keys
())
{
confirmConnection
(
name
)
;
if
(
bTerm
==
true
)
break
;
}
if
(
bTerm
==
false
)
QThread
::
currentThread
()
->
msleep
(
30000
);
}
}
};
ZoomPipeline_FuncSvr/database/databaseresource.h
浏览文件 @
45360d0b
...
...
@@ -6,11 +6,12 @@
#include <QSqlDatabase>
#include <QString>
#include <QMutex>
#include <QThread>
//!this class provide an database reource,
//!In different thread, workers can get existing db connections
//! immediately without re-creation operations.
namespace
ZPDatabase
{
class
DatabaseResource
:
public
Q
Object
class
DatabaseResource
:
public
Q
Thread
{
Q_OBJECT
public:
...
...
@@ -23,8 +24,8 @@ public:
QString
User
;
QString
Pass
;
QString
ExtraOptions
;
bool
status
;
QString
lastError
;
}
;
public:
...
...
@@ -49,9 +50,14 @@ public:
void
remove_connections
();
bool
confirmConnection
(
const
QString
&
connName
);
const
QMap
<
QString
,
tagConnectionPara
>
&
currentDatabaseConnections
(){
return
m_dbNames
;}
QMap
<
QString
,
tagConnectionPara
>
currentDatabaseConnections
(){
return
m_dbNames
;}
void
run
();
void
TerminateMe
(){
bTerm
=
true
;}
protected:
bool
bTerm
;
QMutex
m_mutex_reg
;
QMap
<
QString
,
tagConnectionPara
>
m_dbNames
;
signals:
...
...
ZoomPipeline_FuncSvr/zpmainframe.cpp
浏览文件 @
45360d0b
...
...
@@ -6,6 +6,7 @@
#include <QMessageBox>
#include <QFileDialog>
#include <QSqlDatabase>
#include <QMap>
using
namespace
ZPNetwork
;
using
namespace
ZPTaskEngine
;
ZPMainFrame
::
ZPMainFrame
(
QWidget
*
parent
)
:
...
...
@@ -27,6 +28,7 @@ ZPMainFrame::ZPMainFrame(QWidget *parent) :
//Create databases
m_pDatabases
=
new
ZPDatabase
::
DatabaseResource
(
this
);
connect
(
m_pDatabases
,
&
ZPDatabase
::
DatabaseResource
::
evt_Message
,
this
,
&
ZPMainFrame
::
on_evt_Message
);
m_pDatabases
->
start
();
m_nTimerId
=
startTimer
(
500
);
...
...
@@ -39,10 +41,13 @@ ZPMainFrame::~ZPMainFrame()
m_netEngine
->
RemoveAllAddresses
();
m_netEngine
->
KickAllClients
();
m_netEngine
->
DeactiveImmediately
();
//term the confirm check
m_pDatabases
->
TerminateMe
();
m_pDatabases
->
remove_connections
();
m_taskEngine
->
removeThreads
(
-
1
);
while
(
m_netEngine
->
CanExit
()
==
false
||
m_taskEngine
->
canClose
()
==
false
)
while
(
m_netEngine
->
CanExit
()
==
false
||
m_taskEngine
->
canClose
()
==
false
||
m_pDatabases
->
isRunning
()
==
true
)
{
QCoreApplication
::
processEvents
();
QThread
::
currentThread
()
->
msleep
(
200
);
...
...
@@ -141,6 +146,20 @@ void ZPMainFrame::timerEvent(QTimerEvent * e)
str_msg
+=
tr
(
"Current Task Threads: %1
\n
"
).
arg
(
m_taskEngine
->
threadsCount
());
str_msg
+=
tr
(
"Current Task Payload: %1
\n
"
).
arg
(
m_taskEngine
->
payload
());
str_msg
+=
tr
(
"Current Task Idle Threads: %1
\n
"
).
arg
(
m_taskEngine
->
idleThreads
());
QMap
<
QString
,
ZPDatabase
::
DatabaseResource
::
tagConnectionPara
>
map_conns
=
m_pDatabases
->
currentDatabaseConnections
();
str_msg
+=
tr
(
"Database Connections: %1
\n
"
).
arg
(
map_conns
.
size
());
foreach
(
QString
name
,
map_conns
.
keys
()
)
{
ZPDatabase
::
DatabaseResource
::
tagConnectionPara
&
para
=
map_conns
[
name
];
str_msg
+=
tr
(
"
\t
%1 status = %2"
).
arg
(
name
).
arg
(
para
.
status
);
if
(
para
.
status
==
false
)
str_msg
+=
", Msg="
+
para
.
lastError
;
str_msg
+=
"
\n
"
;
}
ui
->
plainTextEdit_status_net
->
setPlainText
(
str_msg
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录