Summary Files Commits Branches @commit @diff @stats
path: root / src / message.cpp
diff options
context:
space:
mode:
1 files changed, 31 insertions, 3 deletions
-rw-r--r--src/message.cpp34
diff --git a/src/message.cpp b/src/message.cpp
index af3168c..ee1d8fe 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -1,15 +1,43 @@
#include <cstring>
#include "message.h"
+/* Private */
+
+void Message::free() {
+ delete[] this->msg;
+}
+
+void Message::copyFrom(const Message& other) {
+ this->can_id = other.can_id;
+ this->size = other.size;
+ this->received = other.received;
+
+ this->msg = new unsigned char[this->size];
+ std::memcpy(this->msg, other.msg, this->size);
+}
+
+/* Public */
+
Message::Message(unsigned int can_id, const Frame& first_frame) : can_id(can_id), received(0) {
this->size = first_frame.get_size();
this->msg = new unsigned char[this->size];
this->receive_frame(first_frame);
}
-Message::Message(const Message& rhs) : can_id(rhs.can_id), size(rhs.size), received(rhs.received) {
- this->msg = new unsigned char[this->size];
- std::memcpy(this->msg, rhs.msg, this->size);
+Message::~Message() {
+ this->free();
+}
+
+Message::Message(const Message& other) {
+ this->copyFrom(other);
+}
+
+Message& Message::operator=(const Message& other) {
+ if (this != &other) {
+ this->free();
+ this->copyFrom(other);
+ }
+ return *this;
}
void Message::receive_frame(const Frame& f) {