/* */ #ifndef _D_EXTENSION_MESSAGE_REGISTRY_H_ #define _D_EXTENSION_MESSAGE_REGISTRY_H_ #include "common.h" #include #include "BtConstants.h" #include "A2STR.h" namespace aria2 { class ExtensionMessageRegistry { private: Extensions _extensions; public: ExtensionMessageRegistry() { _extensions["ut_pex"] = 8; // http://www.bittorrent.org/beps/bep_0009.html _extensions["ut_metadata"] = 9; } const Extensions& getExtensions() const { return _extensions; } uint8_t getExtensionMessageID(const std::string& name) const { Extensions::const_iterator itr = _extensions.find(name); if(itr == _extensions.end()) { return 0; } else { return (*itr).second; } } const std::string& getExtensionName(uint8_t id) const { for(Extensions::const_iterator itr = _extensions.begin(), eoi = _extensions.end(); itr != eoi; ++itr) { const Extensions::value_type& p = *itr; if(p.second == id) { return p.first; } } return A2STR::NIL; } void removeExtension(const std::string& name) { _extensions.erase(name); } }; } // namespace aria2 #endif // _D_EXTENSION_MESSAGE_REGISTRY_H_