X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2F80221Bundle%2FTLVPacket.cc;h=12d9bfdb4d00a4007bdfedd071f54f2c70bf5962;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=3bf20396de9f29e63d35be2a6b57dfea29c5a1c4;hpb=cfd663c444dee7e03a4b7579b544db2524332bfb;p=senf.git diff --git a/Packets/80221Bundle/TLVPacket.cc b/Packets/80221Bundle/TLVPacket.cc index 3bf2039..12d9bfd 100644 --- a/Packets/80221Bundle/TLVPacket.cc +++ b/Packets/80221Bundle/TLVPacket.cc @@ -28,11 +28,26 @@ // Custom includes #include -#include +#include "../../Utils/hexdump.hh" #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +prefix_ senf::safe_data_iterator senf::BaseTLVPacketParser::resizeValue( + DynamicTLVLengthParser::value_type size) +{ + DynamicTLVLengthParser::value_type current_length ( length()); + length( size); + + safe_data_iterator si (data(), boost::next(i(), 1 + length_bytes() )); + if (current_length > size) + data().erase( si, boost::next(si, current_length-size)); + else + data().insert( si, size-current_length, 0); + return si; +} + + prefix_ senf::DynamicTLVLengthParser::value_type senf::DynamicTLVLengthParser::value() const { switch (bytes() ) { @@ -148,15 +163,6 @@ prefix_ void senf::DynamicTLVLengthParser:: maxValue(DynamicTLVLengthParser::val } -prefix_ senf::PacketInterpreterBase::range senf::GenericTLVPacketParser::value() - const -{ - senf::PacketData::iterator begin (boost::next(data().begin(), 1 + length_bytes() )); - return PacketInterpreterBase::range( - begin, boost::next( begin, length()) ); -} - - prefix_ void senf::DynamicTLVLengthParser::resize(size_type size) { value_type v = value(); @@ -178,6 +184,15 @@ prefix_ void senf::DynamicTLVLengthParser::resize(size_type size) } +prefix_ senf::PacketInterpreterBase::range senf::GenericTLVPacketParser::value() + const +{ + senf::PacketData::iterator begin (boost::next(data().begin(), 1 + length_bytes() )); + return PacketInterpreterBase::range( + begin, boost::next( begin, length()) ); +} + + prefix_ void senf::GenericTLVPacketType::dump(packet p, std::ostream & os) { boost::io::ios_all_saver ias(os);