summaryrefslogtreecommitdiff
path: root/common/connectionbase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/connectionbase.cpp')
-rw-r--r--common/connectionbase.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/common/connectionbase.cpp b/common/connectionbase.cpp
index 165614f..a113e6a 100644
--- a/common/connectionbase.cpp
+++ b/common/connectionbase.cpp
@@ -1,6 +1,6 @@
#include "connectionbase.h"
-#include <stdexcept>
+#include <exception>
#include <iostream>
@@ -11,7 +11,7 @@ void ConnectionBase::start_recv() {
void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) {
if(pending_size == 0) {
if(bytes != 4) {
- throw std::runtime_error("Deserialization header error.");
+ error("Deserialization header error.");
}
uint16_t* header = (uint16_t*)data;
@@ -29,7 +29,7 @@ void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) {
if(bytes != pending_size) {
std::cout << "Bytes: " << bytes << " Pending size: " << pending_size << std::endl;
- throw std::runtime_error("Deserialization attempted with incomplete data.");
+ error("Deserialization attempted with incomplete data.");
// TODO: Calling got_data() with incomplete data should be allowed.
}
@@ -75,11 +75,16 @@ void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) {
break;
default:
- throw std::runtime_error("Deserialization attempted on unknown message type.");
+ error("Deserialization attempted on unknown message type.");
}
if(bytes) {
- m->deserialize(data, bytes);
+ try {
+ m->deserialize(data, bytes);
+
+ } catch(std::exception& e) {
+ error(std::string("Deserialization failed: ") + e.what());
+ }
}
got_message(m);