X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fnet%2Fcommunicator.h;h=5921767e6a37ada58ba91876f5a2b80a30c3c59a;hp=8530db128d26c5d168d99fb0af34e7c874484ffc;hb=3c2a877580e234df5fcbe06bf2850cd29f875e28;hpb=50e9f9ea7f7385a2c5931fca2b8fb1103078e67c diff --git a/source/net/communicator.h b/source/net/communicator.h index 8530db1..5921767 100644 --- a/source/net/communicator.h +++ b/source/net/communicator.h @@ -19,6 +19,7 @@ class Communicator { public: sigc::signal signal_handshake_done; + sigc::signal signal_error; private: StreamSocket &socket; @@ -46,8 +47,18 @@ public: throw sequence_error("connection aborted"); if(handshake_status!=2) throw sequence_error("handshaking not done"); - unsigned size = protocol.assemble(pkt, out_buf, buf_size); - socket.write(out_buf, size); + unsigned size = protocol.serialize(pkt, out_buf, buf_size); + try + { + socket.write(out_buf, size); + } + catch(const std::exception &e) + { + good = false; + if(signal_error.empty()) + throw; + signal_error.emit(e); + } } private: