forked from wang191X/testQtOracle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DeleteAclTask.cpp
102 lines (84 loc) · 2.04 KB
/
DeleteAclTask.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "DeleteAclTask.h"
#include <QtSql/QSqlTableModel>
#include <QSqlRecord>
#include <QSqlError>
#include <QString>
#include <QMessageBox>
#include <QDateTime>
#include <QSqlError>
#include <QObject>
#include "DataStruct.h"
#include "SocketClient1.h"
#include "GloabeParams.h"
#include "SocketClientSyn.h"
CDeleteAclTask::CDeleteAclTask(void)
{
}
CDeleteAclTask::~CDeleteAclTask(void)
{
}
void CDeleteAclTask::sendCMD(int groupId)
{
QSqlTableModel model;
QString filter1;
SACL* psacl;
char* pSendBuff;
int len,len1;
int ruleCount;
model.setTable("aclrules");
filter1 = QString("groupid=%1").arg(groupId);
model.setFilter(filter1);
model.select();
ruleCount=model.rowCount();
if (ruleCount==0)
{
//QMessageBox::information(this,"information", G2U(""));
return;
}
psacl=new SACL[ruleCount];
for (int i=0;i<model.rowCount();++i)
{
QSqlRecord record=model.record(i);
psacl[i].cmdType=ACL_DELETE;
psacl[i].id=record.value("id").toInt();
}
len1=sizeof(SACL);
len=ruleCount*len1;
pSendBuff=new char[len];
for (int i=0;i!=ruleCount;++i)
{
memcpy_s(pSendBuff+len1*i, len, (char*)&(psacl[i]), len1 );
}
boost::asio::io_service ios;
CSocketClientSyn socketClientSyn(ios);
socketClientSyn.startConnection();
socketClientSyn.sendData(pSendBuff,len);
char* pRecvBuff=new char[len];
socketClientSyn.recvData(pRecvBuff,len);
socketClientSyn.closeConnection();
for (int i=0;i!=ruleCount;++i)
{
memcpy_s(&psacl[i],len1,pRecvBuff+len1*i,len1);
updateRules(psacl[i].id,psacl[i].cmdType);
}
delete [] psacl;
delete [] pRecvBuff;
delete [] pSendBuff;
}
void CDeleteAclTask::updateRules(int ruleId,int cmdType)
{
QSqlTableModel model;
model.setTable("aclrules");
QString filter1=QString("id=%1").arg(ruleId);
model.setFilter(filter1);
model.select();
if (model.rowCount()==1)
{
QSqlRecord record=model.record(0);
record.setValue("cmdtype",cmdType);
model.setRecord(0,record);
}
model.submitAll();
//QString error=model.lastError().text();
//QMessageBox::information(this, tr("information"), error);
}