00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifdef HAVE_CONFIG_H
00018 # include <dtn-config.h>
00019 #endif
00020
00021 #include "SchemeTable.h"
00022 #include "DTNScheme.h"
00023 #include "EthernetScheme.h"
00024 #include "SessionScheme.h"
00025 #include "StringScheme.h"
00026 #include "WildcardScheme.h"
00027 #include "TCAScheme.h"
00028
00029 namespace dtn {
00030
00031 template <>
00032 SchemeTable* oasys::Singleton<SchemeTable>::instance_ = 0;
00033
00034
00035 SchemeTable::SchemeTable()
00036 {
00037 table_["dtn"] = DTNScheme::instance();
00038 table_["str"] = StringScheme::instance();
00039 table_["*"] = WildcardScheme::instance();
00040 #ifdef __linux__
00041 table_["eth"] = EthernetScheme::instance();
00042 #endif
00043 table_["tca"] = TCAScheme::instance();
00044 table_["dtn-session"] = SessionScheme::instance();
00045 }
00046
00047
00048 SchemeTable::~SchemeTable()
00049 {
00050 table_.clear();
00051 }
00052
00053
00054 void
00055 SchemeTable::register_scheme(const std::string& scheme_str,
00056 Scheme* scheme)
00057 {
00058 table_[scheme_str] = scheme;
00059 }
00060
00061
00062 Scheme*
00063 SchemeTable::lookup(const std::string& scheme_str)
00064 {
00065 SchemeMap::iterator iter = table_.find(scheme_str);
00066 if (iter == table_.end()) {
00067 return NULL;
00068 }
00069
00070 return (*iter).second;
00071 }
00072
00073 }