]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/communicator.cpp
Provide a signal to handle errors from Communicator
[libs/net.git] / source / net / communicator.cpp
index c9b277d3748de137381b0df792d5230b0e8e0c62..618e8b45e9e295f01fc4948ef19daecd56f51242 100644 (file)
@@ -1,6 +1,8 @@
 #include <cstring>
 #include "communicator.h"
 
+using namespace std;
+
 namespace {
 
 using namespace Msp::Net;
@@ -85,9 +87,10 @@ void Communicator::data_available()
        if(!good)
                return;
 
-       in_end += socket.read(in_end, in_buf+buf_size-in_end);
        try
        {
+               in_end += socket.read(in_end, in_buf+buf_size-in_end);
+
                bool more = true;
                while(more)
                {
@@ -114,10 +117,12 @@ void Communicator::data_available()
                        }
                }
        }
-       catch(...)
+       catch(const exception &e)
        {
                good = false;
-               throw;
+               if(signal_error.empty())
+                       throw;
+               signal_error.emit(e);
        }
 }