summaryrefslogtreecommitdiffabout
path: root/include
Unidiff
Diffstat (limited to 'include') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/discovery.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/opkele/discovery.h b/include/opkele/discovery.h
index ab4b9d9..677d7bb 100644
--- a/include/opkele/discovery.h
+++ b/include/opkele/discovery.h
@@ -14,49 +14,57 @@ namespace opkele {
14 inline bool operator()(long a,long b) const { 14 inline bool operator()(long a,long b) const {
15 return (a<0) ? false : (b<0) ? true : (a<b); 15 return (a<0) ? false : (b<0) ? true : (a<b);
16 } 16 }
17 }; 17 };
18 18
19 template <typename _DT> 19 template <typename _DT>
20 class priority_map : public multimap<long,_DT,priority_compare> { 20 class priority_map : public multimap<long,_DT,priority_compare> {
21 typedef multimap<long,_DT,priority_compare> map_type; 21 typedef multimap<long,_DT,priority_compare> map_type;
22 public: 22 public:
23 23
24 inline _DT& add(long priority,const _DT& d) { 24 inline _DT& add(long priority,const _DT& d) {
25 return insert(typename map_type::value_type(priority,d))->second; 25 return insert(typename map_type::value_type(priority,d))->second;
26 } 26 }
27 27
28 bool has_value(const _DT& d) const { 28 bool has_value(const _DT& d) const {
29 for(typename map_type::const_iterator i=this->begin();i!=this->end();++i) 29 for(typename map_type::const_iterator i=this->begin();i!=this->end();++i)
30 if(i->second==d) return true; 30 if(i->second==d) return true;
31 return false; 31 return false;
32 } 32 }
33 }; 33 };
34 34
35 typedef priority_map<string> canonical_ids_t; 35 typedef priority_map<string> canonical_ids_t;
36 typedef priority_map<string> local_ids_t; 36 typedef priority_map<string> local_ids_t;
37 typedef set<string> types_t; 37 typedef set<string> types_t;
38 typedef priority_map<string> uris_t; 38 struct uri_t {
39 string uri;
40 string append;
41
42 uri_t() { }
43 uri_t(const string& u) : uri(u) { }
44 uri_t(const string& u,const string& a) : uri(u), append(a) { }
45 };
46 typedef priority_map<uri_t> uris_t;
39 47
40 class service_t { 48 class service_t {
41 public: 49 public:
42 types_t types; 50 types_t types;
43 uris_t uris; 51 uris_t uris;
44 local_ids_t local_ids; 52 local_ids_t local_ids;
45 string provider_id; 53 string provider_id;
46 54
47 void clear() { 55 void clear() {
48 types.clear(); 56 types.clear();
49 uris.clear(); local_ids.clear(); 57 uris.clear(); local_ids.clear();
50 provider_id.clear(); 58 provider_id.clear();
51 } 59 }
52 }; 60 };
53 typedef priority_map<service_t> services_t; 61 typedef priority_map<service_t> services_t;
54 62
55 class XRD_t { 63 class XRD_t {
56 public: 64 public:
57 time_t expires; 65 time_t expires;
58 66
59 canonical_ids_t canonical_ids; 67 canonical_ids_t canonical_ids;
60 local_ids_t local_ids; 68 local_ids_t local_ids;
61 services_t services; 69 services_t services;
62 string provider_id; 70 string provider_id;