#include <QtCore/QCoreApplication>
#include <QMap>
#include <QMutableMapIterator>
class Segment
{
public:
Segment(quint32 sourceIP, quint32 destinationIP,
quint32 sequenceNumber,const unsigned char *segment)
{
qDebug("%s",Q_FUNC_INFO);
srcIP=sourceIP;
dstIP=destinationIP;
seqNo=sequenceNumber;
data=segment;
};
~Segment()
{
qDebug("%s",Q_FUNC_INFO);
};
quint32 srcIP;
quint32 dstIP;
quint32 seqNo;
private:
const unsigned char *data;
};
class Connection
{
public:
Connection(quint32 sourceIP, quint32 destinationIP)
{
qDebug("%s",Q_FUNC_INFO);
srcIP= sourceIP;
dstIP= destinationIP;
dstRCVMap= new QMap<quint32, Segment*>;
};
~Connection()
{
qDebug("%s",Q_FUNC_INFO);
QMutableMapIterator<quint32, Segment*> mapIter2(*dstRCVMap);
while (mapIter2.hasNext()){
Segment *segment= mapIter2.next().value();
delete segment;
mapIter2.remove();
};
delete dstRCVMap;//Problem
qDebug("END OF %s",Q_FUNC_INFO);
};
void append(Segment *segment)
{
qDebug("%s",Q_FUNC_INFO);
if (segment->srcIP==srcIP && segment->dstIP==dstIP)
dstRCVMap->insert(segment->seqNo, segment);
else
delete segment;
};
private:
quint32 srcIP;
quint32 dstIP;
QMap<quint32, Segment*> *dstRCVMap;
};
int main(int argc, char *argv[])
{
quint32 fakeIP1=123;
quint32 fakeIP2=456;
Connection con(fakeIP1,fakeIP2);
const unsigned char rawSegment[20]={0};
quint32 fakeSeqNo=1;
con.append(new Segment(fakeIP1,fakeIP2,fakeSeqNo,rawSegment));
// return a.exec();
}
#include <QtCore/QCoreApplication>
#include <QMap>
#include <QMutableMapIterator>
class Segment
{
public:
Segment(quint32 sourceIP, quint32 destinationIP,
quint32 sequenceNumber,const unsigned char *segment)
{
qDebug("%s",Q_FUNC_INFO);
srcIP=sourceIP;
dstIP=destinationIP;
seqNo=sequenceNumber;
data=segment;
};
~Segment()
{
qDebug("%s",Q_FUNC_INFO);
};
quint32 srcIP;
quint32 dstIP;
quint32 seqNo;
private:
const unsigned char *data;
};
class Connection
{
public:
Connection(quint32 sourceIP, quint32 destinationIP)
{
qDebug("%s",Q_FUNC_INFO);
srcIP= sourceIP;
dstIP= destinationIP;
dstRCVMap= new QMap<quint32, Segment*>;
};
~Connection()
{
qDebug("%s",Q_FUNC_INFO);
QMutableMapIterator<quint32, Segment*> mapIter2(*dstRCVMap);
while (mapIter2.hasNext()){
Segment *segment= mapIter2.next().value();
delete segment;
mapIter2.remove();
};
delete dstRCVMap;//Problem
qDebug("END OF %s",Q_FUNC_INFO);
};
void append(Segment *segment)
{
qDebug("%s",Q_FUNC_INFO);
if (segment->srcIP==srcIP && segment->dstIP==dstIP)
dstRCVMap->insert(segment->seqNo, segment);
else
delete segment;
};
private:
quint32 srcIP;
quint32 dstIP;
QMap<quint32, Segment*> *dstRCVMap;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
quint32 fakeIP1=123;
quint32 fakeIP2=456;
Connection con(fakeIP1,fakeIP2);
const unsigned char rawSegment[20]={0};
quint32 fakeSeqNo=1;
con.append(new Segment(fakeIP1,fakeIP2,fakeSeqNo,rawSegment));
// return a.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks