X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fprotocol.cpp;h=d56ac77a09f70eff7137da98beef2eb7112d8978;hp=3e7d479b52407f4bca47f3057fdeef7ed507fd96;hb=4696a776e2875697ea0d6a733609dd9c37918971;hpb=65b029e8334d4dfc9a6161fc04740b03d56a8e2f diff --git a/source/protocol.cpp b/source/protocol.cpp index 3e7d479..d56ac77 100644 --- a/source/protocol.cpp +++ b/source/protocol.cpp @@ -8,6 +8,8 @@ using namespace std; namespace { +using Msp::Net::buffer_error; + template class Assembler { @@ -32,7 +34,7 @@ char *Assembler::assemble(const T &v, char *data, char *end) for(unsigned i=0; i::assemble(const string &v, char *data, char *end) { data = Assembler::assemble(v.size(), data, end); if(end-data(v.size())) - throw Msp::Exception("Out of buffer space"); + throw buffer_error("overflow"); memcpy(data, v.data(), v.size()); return data+v.size(); } @@ -64,7 +66,7 @@ const char *Assembler::disassemble(T &v, const char *data, const char *end) for(unsigned i=0; i::disassemble(string &v, const char *data, const ch unsigned short size; data = Assembler::disassemble(size, data, end); if(end-datasize) - throw InvalidParameterValue("Not enough data for packet"); + throw bad_packet("truncated"); const PacketDefBase &pdef = get_packet_by_id(id); const char *ptr = pdef.disassemble(rcv, data+4, data+psz); return ptr-data;