X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FGenericTLV.ct;h=e405ce70b4461d1cd4eea4ab539235eed97a2430;hb=a1c37005ec4c281f6a76c07070a943cd1e36b6af;hp=8d6c085e8f9b9727e7e1be662cf94ed17b034511;hpb=33d8f945cadcf912e8637a59d97ac1d1b320af9f;p=senf.git diff --git a/senf/Packets/GenericTLV.ct b/senf/Packets/GenericTLV.ct index 8d6c085..e405ce7 100644 --- a/senf/Packets/GenericTLV.ct +++ b/senf/Packets/GenericTLV.ct @@ -40,7 +40,7 @@ template template prefix_ Parser senf::GenericTLVParserBase::init() -{ +{ senf::PacketParserBase::size_type oldSize (bytes() ); senf::PacketParserBase::size_type newParserSize ( senf::init_bytes::value ); this->resize( oldSize, newParserSize); @@ -53,7 +53,7 @@ prefix_ Parser senf::GenericTLVParserBase::init() template prefix_ void senf::GenericTLVParserBase::dump(std::ostream & os) - const + const { if (Base::Registry::instance().isRegistered( *this)) { Base::Registry::instance().dump( *this, os); @@ -68,8 +68,8 @@ prefix_ void senf::GenericTLVParserBase::dump(std::ostream & os) } template -prefix_ senf::PacketInterpreterBase::range senf::GenericTLVParserBase::value() - const +prefix_ senf::PacketInterpreterBase::range senf::GenericTLVParserBase::value() + const { senf::PacketData::iterator begin ( boost::next(this->i(), senf::bytes( self())) ); return PacketInterpreterBase::range(begin, boost::next( begin, this->length()) ); @@ -97,7 +97,6 @@ template prefix_ void senf::GenericTLVParserRegistry::registerParser() { Keytype key (Parser::typeId+0); - std::cout << "GenericTLVParserRegistry::registerParser " << unsigned(key) << std::endl; typename Map::iterator i (map_.find( key )); if (i == map_.end() ) map_.insert(key, new detail::GenericTLVParserRegistry_Entry() ); @@ -135,7 +134,19 @@ prefix_ senf::PacketParserBase::size_type senf::GenericTLVParserRegistry +prefix_ senf::PacketParserBase::size_type senf::GenericTLVParserRegistry::bytes( + GenericTLVParser const & parser, Keytype const & key) + const +{ + typename Map::const_iterator i (map_.find( key)); + if (i != map_.end()) + return (i->second)->bytes(parser); + else + throw TLVParserNotRegisteredException(); +} + + ///////////////////////////////ct.e//////////////////////////////////////// #undef prefix_