X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcommunicator.h;h=0aa152cd6c803e37410bc641abeb17f0d5748a3f;hb=4696a776e2875697ea0d6a733609dd9c37918971;hp=144f87210f40911e097114b14a86e35479d2a0ea;hpb=ef23ca71babc753231bb2dd197be6dd7099d9804;p=libs%2Fnet.git diff --git a/source/communicator.h b/source/communicator.h index 144f872..0aa152c 100644 --- a/source/communicator.h +++ b/source/communicator.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspnet -Copyright © 2009 Mikkosoft Productions, Mikko Rasa -Distributed under the LGPL -*/ - #ifndef MSP_NET_COMMUNICATOR_H_ #define MSP_NET_COMMUNICATOR_H_ @@ -14,6 +7,14 @@ Distributed under the LGPL namespace Msp { namespace Net { +class sequence_error: public std::logic_error +{ +public: + sequence_error(const std::string &w): std::logic_error(w) { } + virtual ~sequence_error() throw() { } +}; + + class Communicator { public: @@ -35,13 +36,14 @@ public: ~Communicator(); void initiate_handshake(); + bool is_handshake_done() const { return handshake_status==2; } template void send(const P &pkt) { if(handshake_status!=2) - throw InvalidState("Handshaking is not done"); - unsigned size=protocol.assemble(pkt, out_buf, buf_size); + throw sequence_error("handshaking not done"); + unsigned size = protocol.assemble(pkt, out_buf, buf_size); socket.write(out_buf, size); }