//#include "TLVPacket.ih"
// Custom includes
-#include "TLVPacket.hh"
#define prefix_
///////////////////////////////ct.p////////////////////////////////////////
-template <class TypeParser, class LengthParser>
-prefix_ void senf::TLVPacketType<TypeParser, LengthParser>::dump(packet p, std::ostream & os)
+template <class ForwardReadableRange>
+prefix_ void senf::GenericTLVPacketParser::value(ForwardReadableRange const &range)
{
- os << "TLVPacket:"
- << std::dec
- << " type: " << unsigned(p->type()) << "\n"
- << " length: " << unsigned(p->length()) << "\n";
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ void senf::TLVPacketType<TypeParser, LengthParser>::finalize(packet p)
-{
- try {
- PacketData::size_type size = p.next().data().size();
- if ( size > LengthParser::max_value )
- throw(UnsuportedTLVPacketException());
- p->length() = size;
- }
- catch (InvalidPacketChainException & ex) {
- ;
- }
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ senf::PacketParserBase::size_type senf::TLVPacketType<TypeParser, LengthParser>::initSize()
-{
- return senf::init_bytes<TypeParser>::value + senf::init_bytes<LengthParser>::value;
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ senf::PacketInterpreterBase::optional_range
-senf::TLVPacketType<TypeParser, LengthParser>::nextPacketRange(packet p)
-{
- if (p.data().size() < 5)
- return no_range();
- return range(
- boost::next(p.data().begin(), 4 + senf::bytes(p->length()) ),
- p.data().end() );
+ safe_data_iterator si = resizeValue( boost::size(range) );
+ std::copy( boost::begin(range), boost::end(range), si);
}
///////////////////////////////ct.e////////////////////////////////////////