Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhenfei.zhang
fmp_vip
Commits
04869d6b
Commit
04869d6b
authored
Jan 16, 2018
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 实现socket断开后终止任务。
parent
3720e331
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
76 additions
and
32 deletions
+76
-32
fmvip/fmp_vip_server.cpp
+17
-9
fmvip/fmp_vip_server.h
+6
-1
fmvip/fmvipdispatcher.cpp
+47
-16
fmvip/fmvipdispatcher.h
+3
-0
fmvip/task/fmtask.cpp
+2
-5
version.h
+1
-1
No files found.
fmvip/fmp_vip_server.cpp
View file @
04869d6b
...
...
@@ -20,6 +20,13 @@ FMPVipServer::FMPVipServer() :
isNeedSocketHeader
=
FMPVipSettings
::
instance
()
->
getIsNeedSocketHeader
();
}
FMPVipServer
::~
FMPVipServer
()
{
if
(
dispatcher
!=
nullptr
)
{
delete
dispatcher
;
}
}
void
FMPVipServer
::
Listen
(
quint16
port
)
{
if
(
!
this
->
listen
(
QHostAddress
::
Any
,
port
))
{
...
...
@@ -50,7 +57,12 @@ void FMPVipServer::onNewConnection()
void
FMPVipServer
::
onDisconnected
()
{
FMP_DEBUG
()
<<
"Socket disconnected."
;
socket
->
close
();
if
(
dispatcher
!=
nullptr
)
{
dispatcher
->
stopTask
();
}
emit
SocketDisconnected
();
}
void
FMPVipServer
::
onReadyRead
()
...
...
@@ -66,8 +78,6 @@ void FMPVipServer::onReadyRead()
if
(
!
isNext
)
{
FMP_ERROR
()
<<
"Wait recv data time out. Recved length: "
<<
totalLen
<<
" need length: "
<<
needLen
<<
" Recved data: "
<<
recvData
;
socket
->
close
();
socket
->
deleteLater
();
socket
=
nullptr
;
return
;
}
}
...
...
@@ -84,8 +94,6 @@ void FMPVipServer::onReadyRead()
if
(
header
.
flag
!=
FMSOCKFLAG
)
{
FMP_ERROR
()
<<
"Incompatible protocol. Recved data: "
<<
recvData
;
socket
->
close
();
socket
->
deleteLater
();
socket
=
nullptr
;
return
;
}
else
{
dataLen
=
header
.
len
;
...
...
@@ -110,8 +118,8 @@ void FMPVipServer::onReadyRead()
Write
(
rspData
);
socket
->
waitForBytesWritten
();
socket
->
close
();
socket
->
deleteLater
();
socket
=
nullptr
;
if
(
socket
!=
nullptr
&&
socket
->
isValid
()
&&
socket
->
isOpen
())
{
socket
->
waitForBytesWritten
();
socket
->
close
();
}
}
fmvip/fmp_vip_server.h
View file @
04869d6b
...
...
@@ -16,14 +16,19 @@ typedef struct {
class
FMPVipServer
:
public
QTcpServer
{
Q_OBJECT
public
:
static
FMPVipServer
*
instance
();
~
FMPVipServer
();
void
Listen
(
quint16
port
);
void
Write
(
const
QByteArray
&
data
);
void
SetPluginContext
(
ctkPluginContext
*
ctx
);
//signals:
signals
:
void
SocketDisconnected
();
private
slots
:
void
onNewConnection
();
void
onDisconnected
();
...
...
fmvip/fmvipdispatcher.cpp
View file @
04869d6b
...
...
@@ -33,6 +33,9 @@ FMVipDispatcher::FMVipDispatcher(QObject *parent) :
FMVipDispatcher
::~
FMVipDispatcher
()
{
if
(
fmTask
!=
nullptr
)
{
fmTask
->
deleteLater
();
}
}
void
FMVipDispatcher
::
doTask
(
const
QByteArray
&
reqData
,
QByteArray
&
rspData
)
...
...
@@ -56,19 +59,25 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
switch
(
type
)
{
case
FM_Set_Store_Info
:
{
TaskSetStoreInfo
taskSetStoreInfo
(
jsonObj
);
rspData
=
taskSetStoreInfo
.
doTask
();
// TaskSetStoreInfo taskSetStoreInfo(jsonObj);
// rspData = taskSetStoreInfo.doTask();
fmTask
=
new
TaskSetStoreInfo
(
jsonObj
);
rspData
=
fmTask
->
doTask
();
break
;
}
case
FM_Login
:
{
TaskLogin
taskLogin
(
jsonObj
,
&
session
);
rspData
=
taskLogin
.
doTask
();
// TaskLogin taskLogin(jsonObj, &session);
// rspData = taskLogin.doTask();
fmTask
=
new
TaskLogin
(
jsonObj
,
&
session
);
rspData
=
fmTask
->
doTask
();
session
.
resetCreatedTime
();
break
;
}
case
FM_Pay
:
{
TaskPay
taskPay
(
jsonObj
,
&
session
);
rspData
=
taskPay
.
doTask
();
// TaskPay taskPay(jsonObj, &session);
// rspData = taskPay.doTask();
fmTask
=
new
TaskPay
(
jsonObj
,
&
session
);
rspData
=
fmTask
->
doTask
();
session
.
clear
();
break
;
}
...
...
@@ -80,8 +89,10 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
// epay->StartService();
// rspData = epay->DockPayRespond();
// epay->StopService();
TaskQRPay
taskEPay
(
jsonObj
,
epay
);
rspData
=
taskEPay
.
doTask
();
// TaskQRPay taskEPay(jsonObj, epay);
// rspData = taskEPay.doTask();
fmTask
=
new
TaskQRPay
(
jsonObj
,
epay
);
rspData
=
fmTask
->
doTask
();
}
else
{
rspData
=
QString
::
fromLocal8Bit
(
"{
\"
msg:
\"
:
\"
支付服务不可用
\"
}"
).
toUtf8
();
...
...
@@ -129,8 +140,10 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
break
;
}
case
FM_Refund
:
{
TaskRefund
taskRefund
(
jsonObj
);
rspData
=
taskRefund
.
doTask
();
// TaskRefund taskRefund(jsonObj);
// rspData = taskRefund.doTask();
fmTask
=
new
TaskRefund
(
jsonObj
);
rspData
=
fmTask
->
doTask
();
break
;
}
// case FM_Order_Revoke: {
...
...
@@ -146,8 +159,10 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
// epay->StartService();
// rspData = epay->DockRefundRespond();
// epay->StopService();
TaskQRRefund
taskEPayRefund
(
jsonObj
,
epay
);
rspData
=
taskEPayRefund
.
doTask
();
// TaskQRRefund taskEPayRefund(jsonObj, epay);
// rspData = taskEPayRefund.doTask();
fmTask
=
new
TaskQRRefund
(
jsonObj
,
epay
);
rspData
=
fmTask
->
doTask
();
}
else
{
rspData
=
QString
::
fromLocal8Bit
(
"{
\"
msg:
\"
:
\"
退款服务不可用
\"
}"
).
toUtf8
();
...
...
@@ -155,14 +170,18 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
break
;
}
case
FM_Final
:
{
TaskFinal
taskFinal
(
jsonObj
,
&
session
);
rspData
=
taskFinal
.
doTask
();
// TaskFinal taskFinal(jsonObj, &session);
// rspData = taskFinal.doTask();
fmTask
=
new
TaskFinal
(
jsonObj
,
&
session
);
rspData
=
fmTask
->
doTask
();
session
.
clear
();
break
;
}
case
FM_Fund
:
{
TaskFund
taskFund
(
jsonObj
);
rspData
=
taskFund
.
doTask
();
// TaskFund taskFund(jsonObj);
// rspData = taskFund.doTask();
fmTask
=
new
TaskFund
(
jsonObj
);
rspData
=
fmTask
->
doTask
();
break
;
}
default
:
...
...
@@ -170,6 +189,11 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
break
;
}
if
(
fmTask
!=
nullptr
)
{
fmTask
->
deleteLater
();
fmTask
=
nullptr
;
}
FMP_INFO
()
<<
"Send to pos: "
<<
rspData
;
}
...
...
@@ -186,3 +210,10 @@ void FMVipDispatcher::setPluginContext(ctkPluginContext *ctx)
}
}
}
void
FMVipDispatcher
::
stopTask
()
{
if
(
fmTask
!=
nullptr
)
{
fmTask
->
stopTask
();
}
}
fmvip/fmvipdispatcher.h
View file @
04869d6b
...
...
@@ -22,6 +22,9 @@ public:
void
setPluginContext
(
ctkPluginContext
*
ctx
);
public
slots
:
void
stopTask
();
private
:
FMTask
*
fmTask
;
ctkPluginContext
*
_ctx
;
...
...
fmvip/task/fmtask.cpp
View file @
04869d6b
...
...
@@ -60,7 +60,8 @@ void FMTask::stopTask()
preTask
->
stopTask
();
}
if
(
_window
!=
nullptr
)
{
_window
->
accept
();
_window
->
reject
();
FMMsgWnd
::
WarningWnd
(
QString
::
fromLocal8Bit
(
"通讯中断,交易终止"
),
_window
);
_window
=
nullptr
;
}
...
...
@@ -116,11 +117,7 @@ bool FMTask::sendToServer(bool isShowMsg)
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
#ifdef FMTEST
url
=
"http://127.0.0.1:5000/vip/"
+
ReqUrl
.
at
(
FM_Type
());
#else
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/"
+
ReqUrl
.
at
(
FM_Type
());
#endif
QByteArray
rspData
;
FMNetwork
net
;
...
...
version.h
View file @
04869d6b
...
...
@@ -5,7 +5,7 @@
#define VER_MINOR 1
#define VER_REVISION 0
#define VER_BUILD 3
3
#define VER_BUILD 3
4
//! Convert version numbers to string
#define _STR(S) #S
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment