Mercurial > hg > piper-cpp
comparison vamp-client/qt/ProcessQtTransport.h @ 170:590b1a1fd955
More work on error and exception handling
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 31 Jan 2017 14:53:24 +0000 |
parents | 6ccb195d6de6 |
children | ce42f0bebae3 |
comparison
equal
deleted
inserted
replaced
169:f13dc1db2229 | 170:590b1a1fd955 |
---|---|
35 | 35 |
36 #ifndef PIPER_PROCESS_QT_TRANSPORT_H | 36 #ifndef PIPER_PROCESS_QT_TRANSPORT_H |
37 #define PIPER_PROCESS_QT_TRANSPORT_H | 37 #define PIPER_PROCESS_QT_TRANSPORT_H |
38 | 38 |
39 #include "../SynchronousTransport.h" | 39 #include "../SynchronousTransport.h" |
40 #include "../Exceptions.h" | |
40 | 41 |
41 #include <QProcess> | 42 #include <QProcess> |
42 #include <QString> | 43 #include <QString> |
43 #include <QMutex> | 44 #include <QMutex> |
44 #include <QTime> | 45 #include <QTime> |
179 if (!byteCount) { | 180 if (!byteCount) { |
180 | 181 |
181 if (responseStarted) { | 182 if (responseStarted) { |
182 if (duringResponseTimeout > 0 && ms > duringResponseTimeout) { | 183 if (duringResponseTimeout > 0 && ms > duringResponseTimeout) { |
183 log("Server timed out during response"); | 184 log("Server timed out during response"); |
184 throw std::runtime_error("Request timed out"); | 185 m_crashed = true; |
186 throw RequestTimedOut(); | |
185 } | 187 } |
186 } else { | 188 } else { |
187 if (beforeResponseTimeout > 0 && ms > beforeResponseTimeout) { | 189 if (beforeResponseTimeout > 0 && ms > beforeResponseTimeout) { |
188 log("Server timed out before response"); | 190 log("Server timed out before response"); |
189 throw std::runtime_error("Request timed out"); | 191 m_crashed = true; |
192 throw RequestTimedOut(); | |
190 } | 193 } |
191 } | 194 } |
192 | 195 |
193 #ifdef DEBUG_TRANSPORT | 196 #ifdef DEBUG_TRANSPORT |
194 std::cerr << "waiting for data from server (slow = " << slow << ")..." << std::endl; | 197 std::cerr << "waiting for data from server (slow = " << slow << ")..." << std::endl; |
228 buffer.resize(formerSize + byteCount); | 231 buffer.resize(formerSize + byteCount); |
229 m_process->read(buffer.data() + formerSize, byteCount); | 232 m_process->read(buffer.data() + formerSize, byteCount); |
230 switch (m_completenessChecker->check(buffer)) { | 233 switch (m_completenessChecker->check(buffer)) { |
231 case MessageCompletenessChecker::Complete: complete = true; break; | 234 case MessageCompletenessChecker::Complete: complete = true; break; |
232 case MessageCompletenessChecker::Incomplete: break; | 235 case MessageCompletenessChecker::Incomplete: break; |
233 case MessageCompletenessChecker::Invalid: | 236 case MessageCompletenessChecker::Invalid: throw ProtocolError(); |
234 throw std::runtime_error | |
235 ("Invalid message received: corrupt stream from server?"); | |
236 } | 237 } |
237 (void)t.restart(); // reset timeout when we read anything | 238 (void)t.restart(); // reset timeout when we read anything |
238 } | 239 } |
239 } | 240 } |
240 | 241 |