diff --git a/src/protocol/HttpMessage.cc b/src/protocol/HttpMessage.cc index 11c2c646..e7e5fc78 100644 --- a/src/protocol/HttpMessage.cc +++ b/src/protocol/HttpMessage.cc @@ -227,6 +227,9 @@ HttpMessage::HttpMessage(HttpMessage&& msg) this->size_limit = msg.size_limit; msg.size_limit = (size_t)-1; + this->attachment = msg.attachment; + msg.attachment = NULL; + this->parser = msg.parser; msg.parser = NULL; @@ -246,6 +249,9 @@ HttpMessage& HttpMessage::operator = (HttpMessage&& msg) this->size_limit = msg.size_limit; msg.size_limit = (size_t)-1; + this->attachment = msg.attachment; + msg.attachment = NULL; + http_parser_deinit(this->parser); delete this->parser; diff --git a/src/protocol/KafkaMessage.cc b/src/protocol/KafkaMessage.cc index 3beb1ad5..95b75a5d 100644 --- a/src/protocol/KafkaMessage.cc +++ b/src/protocol/KafkaMessage.cc @@ -1625,6 +1625,9 @@ KafkaMessage::KafkaMessage(KafkaMessage&& msg) this->size_limit = msg.size_limit; msg.size_limit = (size_t)-1; + this->attachment = msg.attchment; + msg.attachment = NULL; + this->parser = msg.parser; this->stream = msg.stream; msg.parser = NULL; @@ -1654,6 +1657,9 @@ KafkaMessage& KafkaMessage::operator= (KafkaMessage &&msg) this->size_limit = msg.size_limit; msg.size_limit = (size_t)-1; + this->attachment = msg.attchment; + msg.attachment = NULL; + kafka_parser_deinit(this->parser); delete this->parser; delete this->stream; diff --git a/src/protocol/MySQLMessage.cc b/src/protocol/MySQLMessage.cc index 7ca861b5..12135d4d 100644 --- a/src/protocol/MySQLMessage.cc +++ b/src/protocol/MySQLMessage.cc @@ -46,6 +46,9 @@ MySQLMessage::MySQLMessage(MySQLMessage&& move) this->size_limit = move.size_limit; move.size_limit = (size_t)-1; + this->attachment = move.attachment; + move.attachment = NULL; + parser_ = move.parser_; stream_ = move.stream_; seqid_ = move.seqid_; @@ -64,6 +67,9 @@ MySQLMessage& MySQLMessage::operator= (MySQLMessage&& move) this->size_limit = move.size_limit; move.size_limit = (size_t)-1; + this->attachment = move.attachment; + move.attachment = NULL; + mysql_parser_deinit(parser_); mysql_stream_deinit(stream_); delete parser_; diff --git a/src/protocol/ProtocolMessage.h b/src/protocol/ProtocolMessage.h index a51609f3..0d0c4b7c 100644 --- a/src/protocol/ProtocolMessage.h +++ b/src/protocol/ProtocolMessage.h @@ -61,11 +61,28 @@ public: void set_size_limit(size_t limit) { this->size_limit = limit; } size_t get_size_limit() const { return this->size_limit; } +public: + class Attachment + { + public: + virtual ~Attachment() { } + }; + + void set_attachment(Attachment *att) { this->attachment = att; } + Attachment *get_attachment() const { return this->attachment; } + protected: size_t size_limit; + Attachment *attachment; public: - ProtocolMessage() { this->size_limit = (size_t)-1; } + ProtocolMessage() + { + this->size_limit = (size_t)-1; + this->attachment = NULL; + } + + virtual ~ProtocolMessage() { delete this->attachment; } }; } diff --git a/src/protocol/RedisMessage.cc b/src/protocol/RedisMessage.cc index 20e1f839..741e81e5 100644 --- a/src/protocol/RedisMessage.cc +++ b/src/protocol/RedisMessage.cc @@ -490,6 +490,9 @@ RedisMessage::RedisMessage(RedisMessage&& move) this->size_limit = move.size_limit; move.size_limit = (size_t)-1; + this->attachment = move.attachment; + move.attachment = NULL; + parser_ = move.parser_; stream_ = move.stream_; cur_size_ = move.cur_size_;