diff --git a/app/SysTray-X/systrayxlink.cpp b/app/SysTray-X/systrayxlink.cpp index 5d68487..080ecd7 100644 --- a/app/SysTray-X/systrayxlink.cpp +++ b/app/SysTray-X/systrayxlink.cpp @@ -107,24 +107,33 @@ void SysTrayXLinkReader::slotWorker() while( m_doWork ) { qint32 msglen; - int status1 = in.readRawData( reinterpret_cast< char* >( &msglen ), sizeof( qint32 ) ); + int status_len = in.readRawData( reinterpret_cast< char* >( &msglen ), sizeof( qint32 ) ); emit signalReceivedDataLength( msglen ); - QByteArray message(msglen, 0 ); - int status2 = in.readRawData( message.data(), msglen ); - - emit signalReceivedData( message ); - - if( ( status1 == 4 ) && ( status2 == msglen ) ) + if( status_len != sizeof( qint32 ) ) { - //error handling? + emit signalDebugMessage( "Cannot get message length" ); } - /* - * Send the data to my parent - */ - emit signalReceivedMessage( message ); + + if( msglen > 0) + { + QByteArray message( msglen, 0 ); + int status2 = in.readRawData( message.data(), msglen ); + + emit signalReceivedData( message ); + + if( status2 != msglen ) + { + emit signalDebugMessage( "Cannot get complete message" ); + } + + /* + * Send the data to my parent + */ + emit signalReceivedMessage( message ); + } } /* @@ -160,8 +169,8 @@ SysTrayXLink::SysTrayXLink( Preferences* pref ) /* * Open dump.txt */ - m_dump = new QFile( "dump.txt", this ); - m_dump->open( QIODevice::WriteOnly ); +// m_dump = new QFile( "dump.txt", this ); +// m_dump->open( QIODevice::WriteOnly ); /* * Setup the reader thread @@ -174,6 +183,8 @@ SysTrayXLink::SysTrayXLink( Preferences* pref ) connect( m_reader_thread, &QThread::finished, reader, &QObject::deleteLater ); connect( reader, &SysTrayXLinkReader::signalReceivedMessage, this, &SysTrayXLink::slotLinkRead ); + connect( reader, &SysTrayXLinkReader::signalDebugMessage, this, &SysTrayXLink::slotDebugMessage ); + connect( reader, &SysTrayXLinkReader::signalReceivedDataLength, this, &SysTrayXLink::slotReceivedDataLength ); connect( reader, &SysTrayXLinkReader::signalReceivedData, this, &SysTrayXLink::slotReceivedData ); @@ -193,8 +204,8 @@ SysTrayXLink::~SysTrayXLink() m_stdout->close(); delete m_stdout; - m_dump->close(); - delete m_dump; +// m_dump->close(); +// delete m_dump; } @@ -415,6 +426,15 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref ) } +/* + * Handle the debug message from the reader thread + */ +void SysTrayXLink::slotDebugMessage( QString message ) +{ + emit signalDebugMessage( message ); +} + + /* * Handle data length signal from reader thread */ @@ -427,7 +447,7 @@ void SysTrayXLink::slotReceivedDataLength( qint32 data_len ) /* * Handle data signal from read thread */ -void SysTrayXLink::slotReceivedData( const QByteArray& data ) +void SysTrayXLink::slotReceivedData( QByteArray data ) { emit signalReceivedData( data ); } @@ -436,12 +456,12 @@ void SysTrayXLink::slotReceivedData( const QByteArray& data ) /* * Read the input */ -void SysTrayXLink::slotLinkRead( const QByteArray& message ) +void SysTrayXLink::slotLinkRead( QByteArray message ) { /* * Debug */ - m_dump->write( message ); +// m_dump->write( message ); /* * Decode the message @@ -453,7 +473,7 @@ void SysTrayXLink::slotLinkRead( const QByteArray& message ) /* * write the output */ -void SysTrayXLink::slotLinkWrite( const QByteArray& message ) +void SysTrayXLink::slotLinkWrite( QByteArray message ) { linkWrite( message ); } diff --git a/app/SysTray-X/systrayxlink.h b/app/SysTray-X/systrayxlink.h index e5730d1..1474fed 100644 --- a/app/SysTray-X/systrayxlink.h +++ b/app/SysTray-X/systrayxlink.h @@ -57,6 +57,13 @@ class SysTrayXLinkReader : public QObject signals: + /** + * @brief signalDebugMessage + * + * @param message The message. + */ + void signalDebugMessage( QString message ); + /** * @brief signalReceivedDataLength * @@ -69,14 +76,14 @@ class SysTrayXLinkReader : public QObject * * @param data The received data. */ - void signalReceivedData( const QByteArray& data ); + void signalReceivedData( QByteArray data ); /** * @brief signalReceivedMessage. Signal the received message. * * @param message The received message. */ - void signalReceivedMessage( const QByteArray& message ); + void signalReceivedMessage( QByteArray message ); private: @@ -167,7 +174,7 @@ class SysTrayXLink : public QObject /** * @brief signalWindowState. Signal a change in the window state. */ - void signalWindowState( const QString& state ); + void signalWindowState( QString state ); /** * @brief signalReceivedDataLength @@ -181,21 +188,21 @@ class SysTrayXLink : public QObject * * @param data The data received. */ - void signalReceivedData( const QByteArray& data ); + void signalReceivedData( QByteArray data ); /** * @brief signalLinkReceiveError. Cannot parse received JSON message. * * @param error JSON error message */ - void signalLinkReceiveError( const QString& error ); + void signalLinkReceiveError( QString error ); /** * @brief signalDebugMessage. Signal a debug message. * * @param message The message. */ - void signalDebugMessage( const QString& message ); + void signalDebugMessage( QString message ); /** * @brief signalUnreadMail. Signal numder of unread mails. @@ -214,7 +221,7 @@ class SysTrayXLink : public QObject /** * @brief slotLinkWrite. Write the link. */ - void slotLinkWrite( const QByteArray& message ); + void slotLinkWrite( QByteArray message ); /** * @brief slotIconTypeChange. Slot for handling icon type change signals. @@ -238,6 +245,13 @@ class SysTrayXLink : public QObject private slots: + /** + * @brief slotDebugMessage. Handle the signal for a debuf message from the reader thread. + * + * @param message The message. + */ + void slotDebugMessage( QString message ); + /** * @brief slotReceivedDataLength. Handle data length signal from the reader thread. * @@ -250,12 +264,12 @@ class SysTrayXLink : public QObject * * @param data The data. */ - void slotReceivedData( const QByteArray& data ); + void slotReceivedData( QByteArray data ); /** * @brief slotLinkRead. Read the link. */ - void slotLinkRead( const QByteArray& message ); + void slotLinkRead( QByteArray message ); private: