From b8766a2041d57a3aa49c3855902953f8de0b0ec1 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 23 Feb 2008 23:05:43 +0000 Subject: - keyderivation and cipher should work now however it needs further testing - rewrite of Buffer and Packets --- plainPacket.cpp | 54 +++++++++++++++--------------------------------------- 1 file changed, 15 insertions(+), 39 deletions(-) (limited to 'plainPacket.cpp') diff --git a/plainPacket.cpp b/plainPacket.cpp index 3ce1521..0906fa2 100644 --- a/plainPacket.cpp +++ b/plainPacket.cpp @@ -33,43 +33,14 @@ #include #include "datatypes.h" - #include "plainPacket.h" - -PlainPacket::~PlainPacket() -{ - buf_=complete_payload_; - length_=max_length_; -} - -PlainPacket::PlainPacket(u_int32_t max_payload_length) : Buffer(max_payload_length + sizeof(payload_type_t)) +PlainPacket::PlainPacket(u_int32_t payload_length, bool allow_realloc) : Buffer(payload_length + sizeof(payload_type_t), allow_realloc) { - payload_type_ = NULL; - splitPayload(); -} - -void PlainPacket::splitPayload() -{ - complete_payload_length_ = length_; - complete_payload_ = buf_; - payload_type_ = reinterpret_cast(buf_); - buf_ += sizeof(payload_type_t); - length_ -= sizeof(payload_type_t); - max_length_ = length_; -} - -void PlainPacket::setCompletePayloadLength(u_int32_t payload_length) -{ - complete_payload_length_ = payload_length; - length_=complete_payload_length_-sizeof(payload_type_t); -} - -u_int32_t PlainPacket::getCompletePayloadLength() -{ - return complete_payload_length_; + payload_ = buf_ + sizeof(payload_type_t); + *payload_type_ = 0; } payload_type_t PlainPacket::getPayloadType() const @@ -83,16 +54,21 @@ void PlainPacket::setPayloadType(payload_type_t payload_type) *payload_type_ = PAYLOAD_TYPE_T_HTON(payload_type); } -void PlainPacket::setLength(u_int32_t length) +u_int32_t PlainPacket::getPayloadLength() const +{ + return (length_ > sizeof(payload_type_t)) ? (length_ - sizeof(payload_type_t)) : 0; +} + +void PlainPacket::setPayloadLength(u_int32_t payload_length) { - if(length > max_length_) - throw std::out_of_range("can't set length greater then size ofsize of allocated memory"); + Buffer::setLength(payload_length + sizeof(payload_type_t)); - length_ = length; - complete_payload_length_ = length_ + sizeof(payload_type_t); + // depending on allow_realloc buf_ may point to another address + payload_type_ = reinterpret_cast(buf_); + payload_ = buf_ + sizeof(payload_type_t); } -u_int32_t PlainPacket::getMaxLength() const +u_int8_t* PlainPacket::getPayload() { - return max_length_; + return payload_; } -- cgit v1.2.3