@@ -23,6 +23,7 @@ FlatBufferConnection::FlatBufferConnection(const QString& origin, const QString&
2323 , _registered(false )
2424{
2525 connect (&_socket, &QTcpSocket::readyRead, this , &FlatBufferConnection::readData, Qt::UniqueConnection);
26+ connect (&_socket, &QTcpSocket::disconnected, this , &FlatBufferConnection::disconnected);
2627
2728 // init connect
2829 connectToHost ();
@@ -65,12 +66,16 @@ void FlatBufferConnection::readData()
6566
6667 if (hyperionnet::VerifyReplyBuffer (verifier))
6768 {
68- parseReply (hyperionnet::GetReply (msgData));
69+ const hyperionnet::Reply* reply = hyperionnet::GetReply (msgData);
70+ if (!parseReply (reply))
71+ {
72+ qDebug () << " Reply received with error: " << reply->error ();
73+ _socket.close ();
74+ }
6975 continue ;
7076 }
7177
7278 qDebug () << " Unable to parse reply" ;
73- // Error(_log, "Unable to parse reply");
7479 }
7580}
7681
@@ -160,28 +165,29 @@ void FlatBufferConnection::sendMessage(const uint8_t* buffer, uint32_t size)
160165
161166bool FlatBufferConnection::parseReply (const hyperionnet::Reply *reply)
162167{
163- if (! reply->error ())
168+ if (reply->error () == NULL )
164169 {
165- // no error set must be a success or registered
166- const auto registered = reply->registered ();
170+ if (_registered)
171+ {
172+ return true ;
173+ }
167174
168- // We got a registered reply.
169- if (registered == - 1 || registered != _priority)
175+ const auto registered = reply-> registered ();
176+ if (registered == _priority)
170177 {
171- _registered = false ;
178+ _registered = true ;
172179 }
173180 else
174181 {
175- _registered = true ;
182+ _registered = false ;
176183 }
177-
178184 return true ;
179185 }
180- else
181- {
182- _registered = false ;
183- throw std::runtime_error (reply->error ()->str ());
184- }
185-
186186 return false ;
187187}
188+
189+ void FlatBufferConnection::disconnected ()
190+ {
191+ qDebug () << " Connection to Hyperion server was closed" ;
192+ emit serverDisconnected ();
193+ }
0 commit comments