3 #include "SessionReader.h"
4 #include "SessionReader.moc"
7 SessionReader::SessionReader(SessionIOWrapper
*ioWrapper
, ModuleMapper
*moduleMapper
)
8 : QObject(NULL
), m_ioDevice(ioWrapper
->ioDevice()), m_moduleMapper(moduleMapper
) {
9 connect(m_ioDevice
, SIGNAL(readyRead()), SLOT(readData()), Qt::QueuedConnection
);
12 SessionReader::~SessionReader() {
16 void SessionReader::readData() {
17 m_unprocessed
+= m_ioDevice
->readAll();
19 const uint32_t sourceSize
= sizeof(packet
->dataSource
);
20 const uint32_t sizeSize
= sizeof(packet
->dataSize
);
21 while(m_unprocessed
.size() > int(sourceSize
+ sizeSize
)) {
22 packet
= new DataPacket
;
23 memcpy(&packet
->dataSource
, m_unprocessed
.data(), sourceSize
);
24 memcpy(&packet
->dataSize
, m_unprocessed
.data() + sourceSize
, sizeSize
);
25 if(m_unprocessed
.size() < int(packet
->dataSize
)) {
29 packet
->data
= new char[packet
->dataSize
];
30 memcpy(packet
->data
, m_unprocessed
.data() + sourceSize
+ sizeSize
, packet
->dataSize
);
32 m_moduleMapper
->processPacket(packet
);
34 m_unprocessed
.remove(0, sourceSize
+ sizeSize
+ packet
->dataSize
);