catcing all std exceptions in sendThread (and readThread)

This commit is contained in:
Matej Sekoranja
2014-06-02 21:17:56 +02:00
parent 60b3e0e8e7
commit 892961f85f
2 changed files with 22 additions and 5 deletions

View File

@@ -1023,10 +1023,14 @@ namespace epics {
{
try {
bac->processRead();
} catch (io_exception &e) {
} catch (std::exception &e) {
LOG(logLevelWarn,
"an exception caught while in receiveThread at %s:%d: %s",
__FILE__, __LINE__, e.what());
} catch (...) {
LOG(logLevelWarn,
"unknown exception caught while in sendThread at %s:%d",
__FILE__, __LINE__);
}
}
@@ -1046,10 +1050,21 @@ namespace epics {
{
try {
bac->processWrite();
} catch (io_exception &e) {
} catch (connection_closed_exception &cce) {
// noop
/*
LOG(logLevelDebug,
"connection closed by remote host while in sendThread at %s:%d: %s",
__FILE__, __LINE__, e.what());
*/
} catch (std::exception &e) {
LOG(logLevelWarn,
"an exception caught while in sendThread at %s:%d: %s",
__FILE__, __LINE__, e.what());
} catch (...) {
LOG(logLevelWarn,
"unknown exception caught while in sendThread at %s:%d",
__FILE__, __LINE__);
}
}

View File

@@ -589,13 +589,15 @@ namespace epics {
codec._readBuffer->put(PVA_VERSION);
codec._readBuffer->put(invalidFlagsValues[i]);
codec._readBuffer->put((int8_t)0x23);
codec._readBuffer->putInt(0);
//codec._readBuffer->putInt(0);
codec._readBuffer->putInt(i); // to check zero-payload
codec._readBuffer->flip();
codec.processRead();
testOk(codec._invalidDataStreamCount == 1,
"%s: codec._invalidDataStreamCount == 1",
testOk(codec._invalidDataStreamCount == (i != 0 ? 1 : 0),
//testOk(codec._invalidDataStreamCount == 1,
"%s: codec._invalidDataStreamCount == 1",
CURRENT_FUNCTION);
testOk(codec._closedCount == 0,
"%s: codec._closedCount == 0", CURRENT_FUNCTION);