X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fcommunicator.h;h=322d095a8ec3d1c1df5b258c25f65b3c88a713fa;hb=6625cf0e574406425c35d33110f8d99617e902df;hp=af5ff58791ce1ad72a1d97c07591264927bfae64;hpb=400f3e031834eee9d96dbd5cda25655102b75805;p=libs%2Fnet.git diff --git a/source/net/communicator.h b/source/net/communicator.h index af5ff58..322d095 100644 --- a/source/net/communicator.h +++ b/source/net/communicator.h @@ -1,6 +1,7 @@ #ifndef MSP_NET_COMMUNICATOR_H_ #define MSP_NET_COMMUNICATOR_H_ +#include #include #include "protocol.h" @@ -9,11 +10,16 @@ namespace Net { class StreamSocket; -class sequence_error: public std::logic_error +class sequence_error: public invalid_state { public: - sequence_error(const std::string &w): std::logic_error(w) { } - virtual ~sequence_error() throw() { } + sequence_error(const std::string &w): invalid_state(w) { } +}; + +class incompatible_protocol: public std::runtime_error +{ +public: + incompatible_protocol(const std::string &w): std::runtime_error(w) { } }; @@ -27,13 +33,13 @@ private: StreamSocket &socket; const Protocol &protocol; ReceiverBase &receiver; - int handshake_status; - unsigned buf_size; - char *in_buf; - char *in_begin; - char *in_end; - char *out_buf; - bool good; + int handshake_status = 0; + std::size_t buf_size = 65536; + char *in_buf = 0; + char *in_begin = 0; + char *in_end = 0; + char *out_buf = 0; + bool good = true; public: Communicator(StreamSocket &, const Protocol &, ReceiverBase &); @@ -46,7 +52,7 @@ public: void send(const P &); private: - void send_data(unsigned); + void send_data(std::size_t); void data_available(); bool receive_packet(const Protocol &, ReceiverBase &);