Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
colorEagleStdio
zoompipeline
提交
e88f88a0
zoompipeline
项目概览
colorEagleStdio
/
zoompipeline
通知
181
Star
12
Fork
4
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
e88f88a0
编写于
1月 19, 2014
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add ui elems , enable dynamic paraments settings , such as add/remove threads\listen addresses
Start database develop
上级
aa196c60
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
771 addition
and
35 deletion
+771
-35
ZoomPipeline_FuncSvr/ZoomPipeline_FuncSvr.pro
ZoomPipeline_FuncSvr/ZoomPipeline_FuncSvr.pro
+4
-2
ZoomPipeline_FuncSvr/database/databaseresource.cpp
ZoomPipeline_FuncSvr/database/databaseresource.cpp
+40
-0
ZoomPipeline_FuncSvr/database/databaseresource.h
ZoomPipeline_FuncSvr/database/databaseresource.h
+40
-0
ZoomPipeline_FuncSvr/network/zp_net_threadpool.cpp
ZoomPipeline_FuncSvr/network/zp_net_threadpool.cpp
+24
-12
ZoomPipeline_FuncSvr/network/zp_net_threadpool.h
ZoomPipeline_FuncSvr/network/zp_net_threadpool.h
+1
-0
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
+1
-1
ZoomPipeline_FuncSvr/zpmainframe.cpp
ZoomPipeline_FuncSvr/zpmainframe.cpp
+255
-16
ZoomPipeline_FuncSvr/zpmainframe.h
ZoomPipeline_FuncSvr/zpmainframe.h
+22
-0
ZoomPipeline_FuncSvr/zpmainframe.ui
ZoomPipeline_FuncSvr/zpmainframe.ui
+384
-4
未找到文件。
ZoomPipeline_FuncSvr/ZoomPipeline_FuncSvr.pro
浏览文件 @
e88f88a0
...
...
@@ -22,7 +22,8 @@ SOURCES += main.cpp\
smartlink
/
st_client_table
.
cpp
\
pipeline
/
zp_plworkingthread
.
cpp
\
smartlink
/
st_clientnode
.
cpp
\
pipeline
/
zp_pltaskbase
.
cpp
pipeline
/
zp_pltaskbase
.
cpp
\
database
/
databaseresource
.
cpp
HEADERS
+=
zpmainframe
.
h
\
network
/
zp_tcpserver
.
h
\
...
...
@@ -34,7 +35,8 @@ HEADERS += zpmainframe.h \
pipeline
/
zp_plworkingthread
.
h
\
smartlink
/
st_clientnode
.
h
\
smartlink
/
st_message
.
h
\
pipeline
/
zp_pltaskbase
.
h
pipeline
/
zp_pltaskbase
.
h
\
database
/
databaseresource
.
h
FORMS
+=
zpmainframe
.
ui
...
...
ZoomPipeline_FuncSvr/database/databaseresource.cpp
0 → 100644
浏览文件 @
e88f88a0
#include "databaseresource.h"
#include <QThread>
DatabaseResource
::
DatabaseResource
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
//!Get an database connection belong to current thread.
//!if database does not exist, it will be added using dbtype
QSqlDatabase
&
DatabaseResource
::
databse
(
const
QString
&
strDBName
,
const
QString
&
dbtype
)
{
Qt
::
HANDLE
handleThread
=
QThread
::
currentThreadId
();
QString
internal_name
=
QString
(
"%1_%2"
).
arg
(
strDBName
).
arg
((
quint64
)(
handleThread
));
if
(
false
==
m_map_databses
.
contains
(
internal_name
))
m_map_databses
[
internal_name
]
=
QSqlDatabase
::
addDatabase
(
dbtype
,
internal_name
);
return
m_map_databses
[
internal_name
];
}
//!Remove Database
void
DatabaseResource
::
remove_db
(
const
QString
&
strDBName
)
{
Qt
::
HANDLE
handleThread
=
QThread
::
currentThreadId
();
QString
internal_name
=
QString
(
"%1_%2"
).
arg
(
strDBName
).
arg
((
quint64
)(
handleThread
));
if
(
true
==
m_map_databses
.
contains
(
internal_name
))
{
QSqlDatabase
::
removeDatabase
(
internal_name
);
m_map_databses
.
remove
(
internal_name
);
}
}
//!Prepare for db connection operations.
//!in multi-thread programs, db add, remove, conn should be protected with mutex,
void
DatabaseResource
::
PrepareDbReg
()
{
m_mutex_reg
.
lock
();
}
void
DatabaseResource
::
FinishDbReg
()
{
m_mutex_reg
.
unlock
();
}
ZoomPipeline_FuncSvr/database/databaseresource.h
0 → 100644
浏览文件 @
e88f88a0
#ifndef DATABASERESOURCE_H
#define DATABASERESOURCE_H
#include <QObject>
#include <QMap>
#include <QSqlDatabase>
#include <QString>
#include <QMutex>
//!this class provide an database reource,
//!In different thread, workers can get existing db connections
//! immediately without re-creation operations.
class
DatabaseResource
:
public
QObject
{
Q_OBJECT
public:
explicit
DatabaseResource
(
QObject
*
parent
=
0
);
//!Get an database connection belong to current thread.
//!if database does not exist, it will be added using dbtype
QSqlDatabase
&
databse
(
const
QString
&
strDBName
,
const
QString
&
dbtype
);
//!Remove Database
void
remove_db
(
const
QString
&
strDBName
);
//!Prepare for db connection operations.
//!in multi-thread programs, db add, remove, conn should be protected with mutex,
void
PrepareDbReg
();
void
FinishDbReg
();
protected:
QMap
<
QString
,
QSqlDatabase
>
m_map_databses
;
QMutex
m_mutex_reg
;
signals:
public
slots
:
};
#endif // DATABASERESOURCE_H
ZoomPipeline_FuncSvr/network/zp_net_threadpool.cpp
浏览文件 @
e88f88a0
...
...
@@ -22,6 +22,19 @@ int zp_net_ThreadPool::TransThreadNum()
{
return
m_vec_NetTransThreads
.
size
();
}
int
zp_net_ThreadPool
::
TransThreadNum
(
bool
bSSL
)
{
//m_mutex_trans.lock();
int
nsz
=
m_vec_NetTransThreads
.
size
();
int
nCount
=
0
;
for
(
int
i
=
0
;
i
<
nsz
;
i
++
)
{
if
(
m_vec_NetTransThreads
[
i
]
->
SSLConnection
()
==
bSSL
)
nCount
++
;
}
//m_mutex_trans.unlock();
return
nCount
;
}
int
zp_net_ThreadPool
::
totalClients
(
int
idxThread
)
{
...
...
@@ -223,22 +236,21 @@ void zp_net_ThreadPool::DeactiveImmediately()
//Remove n client-Trans Thread(s).a thread marked reomved will be terminated after its last client socket exited.
void
zp_net_ThreadPool
::
RemoveClientTransThreads
(
int
nThreads
,
bool
bSSL
)
{
if
(
nThreads
>
0
)
//m_mutex_trans.lock();
int
nsz
=
m_vec_NetTransThreads
.
size
();
if
(
nThreads
<
0
)
nThreads
=
nsz
;
int
nCount
=
0
;
for
(
int
i
=
0
;
i
<
nsz
&&
nCount
<
nThreads
;
i
++
)
{
//m_mutex_trans.lock();
int
nsz
=
m_vec_NetTransThreads
.
size
();
int
nCount
=
0
;
for
(
int
i
=
0
;
i
<
nsz
&&
nCount
<
nThreads
;
i
++
)
if
(
m_vec_NetTransThreads
[
i
]
->
SSLConnection
()
==
bSSL
)
{
if
(
m_vec_NetTransThreads
[
i
]
->
SSLConnection
()
==
bSSL
)
{
m_vec_NetTransThreads
[
i
]
->
Deactivate
();
nCount
++
;
}
m_vec_NetTransThreads
[
i
]
->
Deactivate
();
nCount
++
;
}
//m_mutex_trans.unlock();
}
//m_mutex_trans.unlock();
}
void
zp_net_ThreadPool
::
SendDataToClient
(
QObject
*
objClient
,
const
QByteArray
&
dtarray
)
...
...
ZoomPipeline_FuncSvr/network/zp_net_threadpool.h
浏览文件 @
e88f88a0
...
...
@@ -47,6 +47,7 @@ public:
//The status
QStringList
ListenerNames
();
int
TransThreadNum
();
int
TransThreadNum
(
bool
bSSL
);
int
totalClients
(
int
idxThread
);
protected:
...
...
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
浏览文件 @
e88f88a0
...
...
@@ -42,7 +42,7 @@ public slots:
//Broadcast dtarray to every client except objFromClient itself
void
BroadcastData
(
QObject
*
objFromClient
,
const
QByteArray
&
dtarray
);
//Set terminate mark, the thread will quit after last client quit.
void
Deactivate
(){
m_bActivated
=
tru
e
;}
void
Deactivate
(){
m_bActivated
=
fals
e
;}
//terminate this thread immediately
void
DeactivateImmediately
(
zp_netTransThread
*
);
//Kick all clients .
...
...
ZoomPipeline_FuncSvr/zpmainframe.cpp
浏览文件 @
e88f88a0
#include "zpmainframe.h"
#include "ui_zpmainframe.h"
#include <QDateTime>
#include <QDialog>
#include <QSettings>
#include <QMessageBox>
#include <QFileDialog>
using
namespace
ZPNetwork
;
using
namespace
ZPTaskEngine
;
ZPMainFrame
::
ZPMainFrame
(
QWidget
*
parent
)
:
QMainWindow
(
parent
),
ui
(
new
Ui
::
ZPMainFrame
)
{
m_currentConffile
=
QCoreApplication
::
applicationFilePath
()
+
".ini"
;
ui
->
setupUi
(
this
);
//Create net engine
m_netEngine
=
new
zp_net_ThreadPool
(
4096
);
connect
(
m_netEngine
,
&
zp_net_ThreadPool
::
evt_Message
,
this
,
&
ZPMainFrame
::
on_evt_Message
);
connect
(
m_netEngine
,
&
zp_net_ThreadPool
::
evt_SocketError
,
this
,
&
ZPMainFrame
::
on_evt_SocketError
);
m_netEngine
->
AddListeningAddress
(
"23456_Plain"
,
QHostAddress
::
Any
,
23456
,
false
);
m_netEngine
->
AddListeningAddress
(
"23457_SSL"
,
QHostAddress
::
Any
,
23457
,
true
);
m_netEngine
->
AddClientTransThreads
(
4
,
false
);
m_netEngine
->
AddClientTransThreads
(
4
,
true
);
//Create TaskEngine
m_taskEngine
=
new
zp_pipeline
(
this
);
m_taskEngine
->
addThreads
(
4
);
//Create Smartlink client table
m_clientTable
=
new
SmartLink
::
st_client_table
(
m_netEngine
,
m_taskEngine
,
this
);
m_nTimerId
=
startTimer
(
500
);
m_pMsgModel
=
new
QStandardItemModel
(
this
);
ui
->
listView_msg
->
setModel
(
m_pMsgModel
);
initUI
();
LoadSettings
(
m_currentConffile
);
}
ZPMainFrame
::~
ZPMainFrame
()
...
...
@@ -65,6 +57,23 @@ void ZPMainFrame::changeEvent(QEvent *e)
break
;
}
}
void
ZPMainFrame
::
initUI
()
{
//Message Shown model
m_pMsgModel
=
new
QStandardItemModel
(
this
);
ui
->
listView_msg
->
setModel
(
m_pMsgModel
);
//Network listeners setting model
m_pListenerModel
=
new
QStandardItemModel
(
0
,
4
,
this
);
m_pListenerModel
->
setHeaderData
(
0
,
Qt
::
Horizontal
,
tr
(
"Name"
));
m_pListenerModel
->
setHeaderData
(
1
,
Qt
::
Horizontal
,
tr
(
"Addr"
));
m_pListenerModel
->
setHeaderData
(
2
,
Qt
::
Horizontal
,
tr
(
"Port"
));
m_pListenerModel
->
setHeaderData
(
3
,
Qt
::
Horizontal
,
tr
(
"SSL"
));
ui
->
tableView_listen
->
setModel
(
m_pListenerModel
);
}
//These Message is nessery.-------------------------------------
void
ZPMainFrame
::
on_evt_Message
(
const
QString
&
strMsg
)
{
...
...
@@ -113,3 +122,233 @@ void ZPMainFrame::timerEvent(QTimerEvent * e)
ui
->
plainTextEdit_status_net
->
setPlainText
(
str_msg
);
}
}
void
ZPMainFrame
::
on_action_Start_Stop_triggered
(
bool
setordel
)
{
if
(
setordel
==
true
)
{
forkServer
(
m_currentConffile
);
}
else
{
m_netEngine
->
RemoveAllAddresses
();
m_netEngine
->
RemoveClientTransThreads
(
-
1
,
true
);
m_netEngine
->
RemoveClientTransThreads
(
-
1
,
false
);
m_taskEngine
->
removeThreads
(
-
1
);
while
(
m_netEngine
->
CanExit
()
==
false
||
m_taskEngine
->
canClose
()
==
false
)
{
QCoreApplication
::
processEvents
(
QEventLoop
::
ExcludeUserInputEvents
);
QThread
::
currentThread
()
->
msleep
(
200
);
}
}
}
void
ZPMainFrame
::
forkServer
(
const
QString
&
config_file
)
{
QSettings
settings
(
config_file
,
QSettings
::
IniFormat
);
int
nListeners
=
settings
.
value
(
"settings/listeners"
,
0
).
toInt
();
if
(
nListeners
<
0
)
nListeners
=
0
;
if
(
nListeners
>=
1024
)
nListeners
=
1024
;
//read listeners from ini
m_netEngine
->
RemoveAllAddresses
();
while
(
m_netEngine
->
ListenerNames
().
size
())
{
QThread
::
currentThread
()
->
msleep
(
200
);
QCoreApplication
::
processEvents
(
QEventLoop
::
ExcludeUserInputEvents
);
}
for
(
int
i
=
0
;
i
<
nListeners
;
i
++
)
{
QString
keyPrefix
=
QString
(
"listener%1/"
).
arg
(
i
);
QString
listen_name
=
settings
.
value
(
keyPrefix
+
"name"
,
QString
(
"Listener%1"
).
arg
(
i
)).
toString
();
QString
Address
=
settings
.
value
(
keyPrefix
+
"address"
,
QString
(
"127.0.0.1"
)).
toString
();
QHostAddress
listen_address
(
Address
)
;
int
nPort
=
settings
.
value
(
keyPrefix
+
"port"
,
23456
+
i
).
toInt
();
bool
bSSL
=
settings
.
value
(
keyPrefix
+
"ssl"
,
i
%
2
?
true
:
false
).
toBool
();
if
(
listen_address
.
isNull
()
==
true
||
nPort
<
1024
||
nPort
>=
32768
)
continue
;
m_netEngine
->
AddListeningAddress
(
listen_name
,
listen_address
,
nPort
,
bSSL
);
}
//read thread config
int
nSSLThreads
=
settings
.
value
(
"settings/nSSLThreads"
,
4
).
toInt
();
int
nPlainThreads
=
settings
.
value
(
"settings/nPlainThreads"
,
4
).
toInt
();
int
nWorkingThreads
=
settings
.
value
(
"settings/nWorkingThreads"
,
8
).
toInt
();
int
nDeltaSSL
=
m_netEngine
->
TransThreadNum
(
true
)
-
nSSLThreads
;
if
(
nDeltaSSL
>
0
)
m_netEngine
->
RemoveClientTransThreads
(
nDeltaSSL
,
true
);
else
if
(
nDeltaSSL
<
0
)
m_netEngine
->
AddClientTransThreads
(
-
nDeltaSSL
,
true
);
int
nDeltaPlain
=
m_netEngine
->
TransThreadNum
(
false
)
-
nPlainThreads
;
if
(
nDeltaPlain
>
0
)
m_netEngine
->
RemoveClientTransThreads
(
nDeltaPlain
,
false
);
else
if
(
nDeltaPlain
<
0
)
m_netEngine
->
AddClientTransThreads
(
-
nDeltaPlain
,
false
);
int
nDeltaWorking
=
m_taskEngine
->
threadsCount
()
-
nWorkingThreads
;
if
(
nDeltaWorking
>
0
)
m_taskEngine
->
removeThreads
(
nDeltaWorking
);
else
m_taskEngine
->
addThreads
(
-
nDeltaWorking
);
}
void
ZPMainFrame
::
on_action_About_triggered
()
{
QApplication
::
aboutQt
();
}
void
ZPMainFrame
::
LoadSettings
(
const
QString
&
config_file
)
{
QSettings
settings
(
config_file
,
QSettings
::
IniFormat
);
int
nListeners
=
settings
.
value
(
"settings/listeners"
,
0
).
toInt
();
if
(
nListeners
<
0
)
nListeners
=
0
;
if
(
nListeners
>=
1024
)
nListeners
=
1024
;
m_pListenerModel
->
removeRows
(
0
,
m_pListenerModel
->
rowCount
());
m_set_listenerNames
.
clear
();
//read listeners from ini
int
nInserted
=
0
;
for
(
int
i
=
0
;
i
<
nListeners
;
i
++
)
{
QString
keyPrefix
=
QString
(
"listener%1/"
).
arg
(
i
);
QString
listen_name
=
settings
.
value
(
keyPrefix
+
"name"
,
QString
(
"Listener%1"
).
arg
(
i
)).
toString
();
QString
Address
=
settings
.
value
(
keyPrefix
+
"address"
,
QString
(
"127.0.0.1"
)).
toString
();
QHostAddress
listen_address
(
Address
)
;
int
nPort
=
settings
.
value
(
keyPrefix
+
"port"
,
23456
+
i
).
toInt
();
bool
bSSL
=
settings
.
value
(
keyPrefix
+
"ssl"
,
i
%
2
?
true
:
false
).
toBool
();
if
(
listen_address
.
isNull
()
==
true
||
nPort
<
1024
||
nPort
>=
32768
)
continue
;
if
(
m_set_listenerNames
.
contains
(
listen_name
))
continue
;
m_set_listenerNames
.
insert
(
listen_name
);
m_pListenerModel
->
insertRow
(
nInserted
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nInserted
,
0
),
listen_name
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nInserted
,
1
),
listen_address
.
toString
());
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nInserted
,
2
),
nPort
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nInserted
,
3
),
bSSL
);
nInserted
++
;
}
//read thread config
int
nSSLThreads
=
settings
.
value
(
"settings/nSSLThreads"
,
4
).
toInt
();
int
nPlainThreads
=
settings
.
value
(
"settings/nPlainThreads"
,
4
).
toInt
();
int
nWorkingThreads
=
settings
.
value
(
"settings/nWorkingThreads"
,
8
).
toInt
();
ui
->
dial_plain_trans_threads
->
setValue
(
nPlainThreads
);
ui
->
dial_ssl_trans_threads
->
setValue
(
nSSLThreads
);
ui
->
dial_task_working_threads
->
setValue
(
nWorkingThreads
);
}
void
ZPMainFrame
::
SaveSettings
(
const
QString
&
config_file
)
{
QSettings
settings
(
config_file
,
QSettings
::
IniFormat
);
int
nListeners
=
m_pListenerModel
->
rowCount
();
settings
.
setValue
(
"settings/listeners"
,
nListeners
);
//save listeners to ini
int
nRealsave
=
0
;
for
(
int
i
=
0
;
i
<
nListeners
;
i
++
)
{
QString
keyPrefix
=
QString
(
"listener%1/"
).
arg
(
nRealsave
);
QString
listen_name
=
m_pListenerModel
->
data
(
m_pListenerModel
->
index
(
i
,
0
)).
toString
();
settings
.
setValue
(
keyPrefix
+
"name"
,
listen_name
);
QHostAddress
listen_address
(
m_pListenerModel
->
data
(
m_pListenerModel
->
index
(
i
,
1
)).
toString
())
;
settings
.
setValue
(
keyPrefix
+
"address"
,
listen_address
.
toString
());
int
nPort
=
m_pListenerModel
->
data
(
m_pListenerModel
->
index
(
i
,
2
)).
toInt
();
settings
.
setValue
(
keyPrefix
+
"port"
,
nPort
);
bool
bSSL
=
m_pListenerModel
->
data
(
m_pListenerModel
->
index
(
i
,
3
)).
toBool
();
settings
.
setValue
(
keyPrefix
+
"ssl"
,
bSSL
);
if
(
listen_name
.
length
()
<=
0
||
nPort
<
1024
||
nPort
>
32767
)
continue
;
nRealsave
++
;
}
settings
.
setValue
(
"settings/listeners"
,
nRealsave
);
//save thread config
int
nSSLThreads
=
ui
->
dial_plain_trans_threads
->
value
();
settings
.
setValue
(
"settings/nPlainThreads"
,
nSSLThreads
);
int
nPlainThreads
=
ui
->
dial_ssl_trans_threads
->
value
();
settings
.
setValue
(
"settings/nSSLThreads"
,
nPlainThreads
);
int
nWorkingThreads
=
ui
->
dial_task_working_threads
->
value
();
settings
.
setValue
(
"settings/nWorkingThreads"
,
nWorkingThreads
);
}
void
ZPMainFrame
::
on_pushButton_addListener_clicked
()
{
QString
name
=
ui
->
lineEdit_listenerName
->
text
();
QString
Addr
=
ui
->
lineEdit_listenerAddr
->
text
();
QHostAddress
address
(
Addr
);
if
(
address
.
isNull
())
address
=
QHostAddress
(
QHostAddress
::
Any
);
QString
Port
=
ui
->
lineEdit_listenerPort
->
text
();
int
nPort
=
Port
.
toInt
();
bool
bSSL
=
ui
->
checkBox_listener_ssl
->
isChecked
();
if
(
m_set_listenerNames
.
contains
(
name
))
{
QMessageBox
::
information
(
this
,
tr
(
"Name Already Used."
),
tr
(
"The listener name has been used."
));
return
;
}
if
(
address
.
isNull
()
==
true
||
nPort
<
1024
||
nPort
>
32767
)
{
QMessageBox
::
information
(
this
,
tr
(
"Invalid Paraments."
),
tr
(
"Address must be valid, Port between 1024 to 32767."
));
return
;
}
int
nRowCount
=
m_pListenerModel
->
rowCount
();
m_pListenerModel
->
insertRow
(
nRowCount
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nRowCount
,
0
),
name
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nRowCount
,
1
),
address
.
toString
());
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nRowCount
,
2
),
nPort
);
m_pListenerModel
->
setData
(
m_pListenerModel
->
index
(
nRowCount
,
3
),
bSSL
);
m_set_listenerNames
.
insert
(
name
);
}
void
ZPMainFrame
::
on_pushButton_delListener_clicked
()
{
auto
ptr
=
ui
->
tableView_listen
->
selectionModel
();
QModelIndexList
lst
=
ptr
->
selectedIndexes
();
QSet
<
int
>
nRows
;
foreach
(
auto
item
,
lst
)
nRows
.
insert
(
item
.
row
());
int
nct
=
0
;
foreach
(
int
row
,
nRows
)
{
m_pListenerModel
->
removeRow
(
row
-
nct
);
nct
++
;
}
}
void
ZPMainFrame
::
on_pushButton_listerner_apply_clicked
()
{
SaveSettings
(
m_currentConffile
);
//forkServer(m_currentConffile);
}
void
ZPMainFrame
::
on_pushButton_threadsApply_clicked
()
{
SaveSettings
(
m_currentConffile
);
//forkServer(m_currentConffile);
}
void
ZPMainFrame
::
on_actionReload_config_file_triggered
()
{
QString
filename
=
QFileDialog
::
getOpenFileName
(
this
,
tr
(
"Open Conf file"
),
QCoreApplication
::
applicationDirPath
(),
tr
(
"Ini files(*.ini)"
));
if
(
filename
.
length
()
>
0
)
{
SaveSettings
(
m_currentConffile
);
m_currentConffile
=
filename
;
LoadSettings
(
m_currentConffile
);
forkServer
(
m_currentConffile
);
}
}
ZoomPipeline_FuncSvr/zpmainframe.h
浏览文件 @
e88f88a0
...
...
@@ -3,6 +3,7 @@
#include <QMainWindow>
#include <QStandardItemModel>
#include <QSet>
#include "network/zp_net_threadpool.h"
#include "pipeline/zp_pipeline.h"
#include "smartlink/st_client_table.h"
...
...
@@ -22,17 +23,38 @@ protected:
void
changeEvent
(
QEvent
*
e
);
void
timerEvent
(
QTimerEvent
*
);
QStandardItemModel
*
m_pMsgModel
;
//Config File Name
QString
m_currentConffile
;
//Listeners settings
QStandardItemModel
*
m_pListenerModel
;
QSet
<
QString
>
m_set_listenerNames
;
private:
Ui
::
ZPMainFrame
*
ui
;
ZPNetwork
::
zp_net_ThreadPool
*
m_netEngine
;
ZPTaskEngine
::
zp_pipeline
*
m_taskEngine
;
SmartLink
::
st_client_table
*
m_clientTable
;
int
m_nTimerId
;
void
initUI
();
void
LoadSettings
(
const
QString
&
config_file
);
void
SaveSettings
(
const
QString
&
config_file
);
void
forkServer
(
const
QString
&
config_file
);
public
slots
:
//These Message is nessery.-------------------------------------
void
on_evt_Message
(
const
QString
&
);
//The socket error message
void
on_evt_SocketError
(
QObject
*
senderSock
,
QAbstractSocket
::
SocketError
socketError
);
void
on_action_Start_Stop_triggered
(
bool
);
void
on_action_About_triggered
();
void
on_actionReload_config_file_triggered
();
void
on_pushButton_addListener_clicked
();
void
on_pushButton_delListener_clicked
();
void
on_pushButton_listerner_apply_clicked
();
void
on_pushButton_threadsApply_clicked
();
};
#endif // ZPMAINFRAME_H
ZoomPipeline_FuncSvr/zpmainframe.ui
浏览文件 @
e88f88a0
...
...
@@ -6,8 +6,8 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
452
</width>
<height>
310
</height>
<width>
556
</width>
<height>
413
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
...
...
@@ -34,6 +34,307 @@
</item>
</layout>
</widget>
<widget
class=
"QWidget"
name=
"tab_settings"
>
<attribute
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/19-1.png
</normaloff>
:/icons/Resources/19-1.png
</iconset>
</attribute>
<attribute
name=
"title"
>
<string>
Settings
</string>
</attribute>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_2"
>
<item>
<widget
class=
"QTabWidget"
name=
"tabWidget_Settings"
>
<property
name=
"tabPosition"
>
<enum>
QTabWidget::South
</enum>
</property>
<property
name=
"tabShape"
>
<enum>
QTabWidget::Triangular
</enum>
</property>
<property
name=
"currentIndex"
>
<number>
0
</number>
</property>
<widget
class=
"QWidget"
name=
"tab_set_network"
>
<attribute
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/4003.png
</normaloff>
:/icons/Resources/4003.png
</iconset>
</attribute>
<attribute
name=
"title"
>
<string>
Listeners
</string>
</attribute>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_3"
>
<item>
<widget
class=
"QLabel"
name=
"label"
>
<property
name=
"text"
>
<string>
Current Listeners
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QTableView"
name=
"tableView_listen"
/>
</item>
<item>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_4"
>
<item>
<widget
class=
"QLabel"
name=
"label_2"
>
<property
name=
"text"
>
<string>
Name
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QLineEdit"
name=
"lineEdit_listenerName"
/>
</item>
<item>
<widget
class=
"QLabel"
name=
"label_3"
>
<property
name=
"text"
>
<string>
Addr
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QLineEdit"
name=
"lineEdit_listenerAddr"
/>
</item>
<item>
<widget
class=
"QLabel"
name=
"label_4"
>
<property
name=
"text"
>
<string>
Port
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QLineEdit"
name=
"lineEdit_listenerPort"
/>
</item>
<item>
<widget
class=
"QCheckBox"
name=
"checkBox_listener_ssl"
>
<property
name=
"text"
>
<string>
SSL Connection
</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_3"
>
<item>
<spacer
name=
"horizontalSpacer"
>
<property
name=
"orientation"
>
<enum>
Qt::Horizontal
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
40
</width>
<height>
20
</height>
</size>
</property>
</spacer>
</item>
<item>
<widget
class=
"QPushButton"
name=
"pushButton_addListener"
>
<property
name=
"text"
>
<string>
Add
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"pushButton_delListener"
>
<property
name=
"text"
>
<string>
Del
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"pushButton_listerner_apply"
>
<property
name=
"text"
>
<string>
Apply
</string>
</property>
<property
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/3floppy_mount-2.png
</normaloff>
:/icons/Resources/3floppy_mount-2.png
</iconset>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget
class=
"QWidget"
name=
"tab_taskPools"
>
<attribute
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/27_Martin.png
</normaloff>
:/icons/Resources/27_Martin.png
</iconset>
</attribute>
<attribute
name=
"title"
>
<string>
Task Pools
</string>
</attribute>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QDial"
name=
"dial_task_working_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
256
</number>
</property>
<property
name=
"pageStep"
>
<number>
16
</number>
</property>
<property
name=
"notchTarget"
>
<double>
8.000000000000000
</double>
</property>
<property
name=
"notchesVisible"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"2"
>
<widget
class=
"QProgressBar"
name=
"progressBar_ssl_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
64
</number>
</property>
<property
name=
"value"
>
<number>
1
</number>
</property>
<property
name=
"format"
>
<string>
%v
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_7"
>
<property
name=
"text"
>
<string>
Working Task Threads
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"2"
>
<widget
class=
"QProgressBar"
name=
"progressBar_plain_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
64
</number>
</property>
<property
name=
"value"
>
<number>
1
</number>
</property>
<property
name=
"invertedAppearance"
>
<bool>
false
</bool>
</property>
<property
name=
"format"
>
<string>
%v
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QDial"
name=
"dial_ssl_trans_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
64
</number>
</property>
<property
name=
"pageStep"
>
<number>
8
</number>
</property>
<property
name=
"wrapping"
>
<bool>
false
</bool>
</property>
<property
name=
"notchTarget"
>
<double>
4.000000000000000
</double>
</property>
<property
name=
"notchesVisible"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_6"
>
<property
name=
"text"
>
<string>
SSL connection Trans Threads
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_5"
>
<property
name=
"text"
>
<string>
Plain connection Trans Threads
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"2"
>
<widget
class=
"QProgressBar"
name=
"progressBar_working_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
256
</number>
</property>
<property
name=
"value"
>
<number>
1
</number>
</property>
<property
name=
"format"
>
<string>
%v
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QDial"
name=
"dial_plain_trans_threads"
>
<property
name=
"minimum"
>
<number>
1
</number>
</property>
<property
name=
"maximum"
>
<number>
64
</number>
</property>
<property
name=
"pageStep"
>
<number>
8
</number>
</property>
<property
name=
"notchesVisible"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"3"
column=
"0"
>
<widget
class=
"QPushButton"
name=
"pushButton_threadsApply"
>
<property
name=
"text"
>
<string>
Apply
</string>
</property>
<property
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/3floppy_mount-1.png
</normaloff>
:/icons/Resources/3floppy_mount-1.png
</iconset>
</property>
</widget>
</item>
<item
row=
"4"
column=
"0"
>
<spacer
name=
"verticalSpacer"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
20
</width>
<height>
40
</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget
class=
"QWidget"
name=
"tab_set_db"
>
<attribute
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/Color Classic.png
</normaloff>
:/icons/Resources/Color Classic.png
</iconset>
</attribute>
<attribute
name=
"title"
>
<string>
Database
</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<widget
class=
"QWidget"
name=
"tab_task"
>
<attribute
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
...
...
@@ -57,7 +358,7 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
452
</width>
<width>
556
</width>
<height>
23
</height>
</rect>
</property>
...
...
@@ -66,6 +367,7 @@
<string>
&
Control
</string>
</property>
<addaction
name=
"action_Start_Stop"
/>
<addaction
name=
"actionReload_config_file"
/>
<addaction
name=
"separator"
/>
<addaction
name=
"actionExit"
/>
</widget>
...
...
@@ -86,6 +388,7 @@
<bool>
false
</bool>
</attribute>
<addaction
name=
"action_Start_Stop"
/>
<addaction
name=
"actionReload_config_file"
/>
<addaction
name=
"separator"
/>
<addaction
name=
"action_About"
/>
</widget>
...
...
@@ -120,10 +423,87 @@
<string>
&
About
</string>
</property>
</action>
<action
name=
"actionReload_config_file"
>
<property
name=
"icon"
>
<iconset
resource=
"resource.qrc"
>
<normaloff>
:/icons/Resources/Color, Lime.png
</normaloff>
:/icons/Resources/Color, Lime.png
</iconset>
</property>
<property
name=
"text"
>
<string>
&
Reload config file
</string>
</property>
<property
name=
"toolTip"
>
<string>
Reload Config file
</string>
</property>
</action>
</widget>
<layoutdefault
spacing=
"6"
margin=
"11"
/>
<resources>
<include
location=
"resource.qrc"
/>
</resources>
<connections/>
<connections>
<connection>
<sender>
dial_plain_trans_threads
</sender>
<signal>
valueChanged(int)
</signal>
<receiver>
progressBar_plain_threads
</receiver>
<slot>
setValue(int)
</slot>
<hints>
<hint
type=
"sourcelabel"
>
<x>
266
</x>
<y>
145
</y>
</hint>
<hint
type=
"destinationlabel"
>
<x>
421
</x>
<y>
144
</y>
</hint>
</hints>
</connection>
<connection>
<sender>
dial_ssl_trans_threads
</sender>
<signal>
valueChanged(int)
</signal>
<receiver>
progressBar_ssl_threads
</receiver>
<slot>
setValue(int)
</slot>
<hints>
<hint
type=
"sourcelabel"
>
<x>
266
</x>
<y>
219
</y>
</hint>
<hint
type=
"destinationlabel"
>
<x>
421
</x>
<y>
219
</y>
</hint>
</hints>
</connection>
<connection>
<sender>
dial_task_working_threads
</sender>
<signal>
valueChanged(int)
</signal>
<receiver>
progressBar_working_threads
</receiver>
<slot>
setValue(int)
</slot>
<hints>
<hint
type=
"sourcelabel"
>
<x>
266
</x>
<y>
294
</y>
</hint>
<hint
type=
"destinationlabel"
>
<x>
421
</x>
<y>
293
</y>
</hint>
</hints>
</connection>
<connection>
<sender>
actionExit
</sender>
<signal>
triggered()
</signal>
<receiver>
ZPMainFrame
</receiver>
<slot>
close()
</slot>
<hints>
<hint
type=
"sourcelabel"
>
<x>
-1
</x>
<y>
-1
</y>
</hint>
<hint
type=
"destinationlabel"
>
<x>
277
</x>
<y>
206
</y>
</hint>
</hints>
</connection>
</connections>
</ui>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录