///////////////////////////////PacketRegistry..p///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
-// senf::PacketRegistry<Tag>::RegistrationProxy<PacketType>
+// senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>
template <class Tag>
template <class PacketType>
-prefix_ senf::PacketRegistry<Tag>::RegistrationProxy<PacketType>::
-RegistrationProxy(typename Tag::key_t key)
+prefix_ senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>::
+ScopedRegistrationProxy(typename Tag::key_t key, int priority)
{
- PacketRegistry<Tag>::template registerPacket<PacketType>(key);
+ PacketRegistry<Tag>::template registerPacket<PacketType>(key,priority);
+}
+
+template <class Tag>
+template <class PacketType>
+prefix_ senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>::~ScopedRegistrationProxy()
+{
+ try {
+ PacketRegistry<Tag>::template unregisterPacket<PacketType>();
+ }
+ catch (PacketTypeNotRegisteredException & ex)
+ {}
}
///////////////////////////////////////////////////////////////////////////
template <class Tag>
template <class PacketType>
-prefix_ void senf::PacketRegistry<Tag>::registerPacket(typename Tag::key_t key)
+prefix_ void senf::PacketRegistry<Tag>::registerPacket(typename Tag::key_t key, int priority)
+{
+ registry().registerPacket<PacketType>(key, priority);
+}
+
+template <class Tag>
+template <class PacketType>
+prefix_ void senf::PacketRegistry<Tag>::unregisterPacket()
+{
+ registry().unregisterPacket<PacketType>();
+}
+
+template <class Tag>
+prefix_ void senf::PacketRegistry<Tag>::unregisterPacket(typename Tag::key_t key, int priority)
{
- registry().registerPacket<PacketType>(key);
+ registry().unregisterPacket(key, priority);
}
template <class Tag>
}
template <class Tag>
-prefix_ senf::PkReg_Entry const & senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key)
+prefix_ typename senf::PacketRegistry<Tag>::Entry const &
+senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key)
{
return registry().lookup(key);
}
template <class Tag>
-prefix_ senf::PkReg_Entry const * senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key,
- NoThrow_t)
+prefix_ typename senf::PacketRegistry<Tag>::Entry const *
+senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key, NoThrow_t)
{
return registry().lookup(key,true);
}
senf::detail::PacketRegistryImpl<KeyType>::begin()
const
{
- return boost::make_transform_iterator(
- registry_.begin(), ::__gnu_cxx::select1st<typename PacketMap::value_type>());
+ return registry_.begin();
}
template <class KeyType>
senf::detail::PacketRegistryImpl<KeyType>::end()
const
{
- return boost::make_transform_iterator(
- registry_.end(), ::__gnu_cxx::select1st<typename PacketMap::value_type>());
+ return registry_.end();
}
///////////////////////////////PacketRegistry..e///////////////////////////////////////