00001 /* 00002 * Copyright 2004-2006 Intel Corporation 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifdef HAVE_CONFIG_H 00018 # include <dtn-config.h> 00019 #endif 00020 00021 #include "WildcardScheme.h" 00022 #include "EndpointID.h" 00023 00024 namespace dtn { 00025 00026 //---------------------------------------------------------------------- 00027 template <> 00028 WildcardScheme* oasys::Singleton<WildcardScheme>::instance_ = 0; 00029 00030 //---------------------------------------------------------------------- 00031 bool 00032 WildcardScheme::validate(const URI& uri, bool is_pattern) 00033 { 00034 // the wildcard scheme can only be used for patterns and must be 00035 // exactly the string "*" 00036 if ((is_pattern == false) || (uri.ssp() != "*")) { 00037 return false; 00038 } 00039 00040 return true; 00041 } 00042 00043 //---------------------------------------------------------------------- 00044 bool 00045 WildcardScheme::match(const EndpointIDPattern& pattern, 00046 const EndpointID& eid) 00047 { 00048 (void)eid; 00049 ASSERT(pattern.scheme() == this); // sanity 00050 00051 // XXX/demmer why was this here: 00052 00053 // the only thing we don't match is the special null endpoint 00054 // if (eid.str() == "dtn:none") { 00055 // return false; 00056 // } 00057 00058 return true; 00059 } 00060 00061 //---------------------------------------------------------------------- 00062 Scheme::singleton_info_t 00063 WildcardScheme::is_singleton(const URI& uri) 00064 { 00065 (void)uri; 00066 return EndpointID::MULTINODE; 00067 } 00068 00069 } // namespace dtn 00070