summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2008-01-12 15:10:22 (UTC)
committer Michael Krelin <hacker@klever.net>2008-01-12 23:26:28 (UTC)
commitd0b30e379fc4032782776866fbb0adc6148ea023 (patch) (unidiff)
tree5433c44938b06bd55c26851555e821db326e1cd0
parent7b5a82f255a85fe2ef466b68e40d9eb1829c633a (diff)
downloadlibopkele-d0b30e379fc4032782776866fbb0adc6148ea023.zip
libopkele-d0b30e379fc4032782776866fbb0adc6148ea023.tar.gz
libopkele-d0b30e379fc4032782776866fbb0adc6148ea023.tar.bz2
fixed priority_map comparison function
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/types.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h
index 4e1415f..de44a5c 100644
--- a/include/opkele/types.h
+++ b/include/opkele/types.h
@@ -88,159 +88,159 @@ namespace opkele {
88 * retrieve the association secret. 88 * retrieve the association secret.
89 * @return association secret 89 * @return association secret
90 */ 90 */
91 virtual secret_t secret() const = 0; 91 virtual secret_t secret() const = 0;
92 /** 92 /**
93 * retrieve the number of seconds the association expires in. 93 * retrieve the number of seconds the association expires in.
94 * @return seconds till expiration 94 * @return seconds till expiration
95 */ 95 */
96 virtual int expires_in() const = 0; 96 virtual int expires_in() const = 0;
97 /** 97 /**
98 * check whether the association is stateless. 98 * check whether the association is stateless.
99 * @return true if stateless 99 * @return true if stateless
100 */ 100 */
101 virtual bool stateless() const = 0; 101 virtual bool stateless() const = 0;
102 /** 102 /**
103 * check whether the association is expired. 103 * check whether the association is expired.
104 * @return true if expired 104 * @return true if expired
105 */ 105 */
106 virtual bool is_expired() const = 0; 106 virtual bool is_expired() const = 0;
107 }; 107 };
108 108
109 /** 109 /**
110 * the shared_ptr<> for association_t object type 110 * the shared_ptr<> for association_t object type
111 */ 111 */
112 typedef tr1mem::shared_ptr<association_t> assoc_t; 112 typedef tr1mem::shared_ptr<association_t> assoc_t;
113 113
114 /** 114 /**
115 * request/response parameters map 115 * request/response parameters map
116 */ 116 */
117 class params_t : public map<string,string> { 117 class params_t : public map<string,string> {
118 public: 118 public:
119 119
120 /** 120 /**
121 * check whether the parameter is present. 121 * check whether the parameter is present.
122 * @param n the parameter name 122 * @param n the parameter name
123 * @return true if yes 123 * @return true if yes
124 */ 124 */
125 bool has_param(const string& n) const; 125 bool has_param(const string& n) const;
126 /** 126 /**
127 * retrieve the parameter (const version) 127 * retrieve the parameter (const version)
128 * @param n the parameter name 128 * @param n the parameter name
129 * @return the parameter value 129 * @return the parameter value
130 * @throw failed_lookup if there is no such parameter 130 * @throw failed_lookup if there is no such parameter
131 */ 131 */
132 const string& get_param(const string& n) const; 132 const string& get_param(const string& n) const;
133 /** 133 /**
134 * retrieve the parameter. 134 * retrieve the parameter.
135 * @param n the parameter name 135 * @param n the parameter name
136 * @return the parameter value 136 * @return the parameter value
137 * @throw failed_lookup if there is no such parameter 137 * @throw failed_lookup if there is no such parameter
138 */ 138 */
139 string& get_param(const string& n); 139 string& get_param(const string& n);
140 140
141 /** 141 /**
142 * parse the OpenID key/value data. 142 * parse the OpenID key/value data.
143 * @param kv the OpenID key/value data 143 * @param kv the OpenID key/value data
144 */ 144 */
145 void parse_keyvalues(const string& kv); 145 void parse_keyvalues(const string& kv);
146 /** 146 /**
147 * sign the fields. 147 * sign the fields.
148 * @param secret the secret used for signing 148 * @param secret the secret used for signing
149 * @param sig reference to the string, containing base64-encoded 149 * @param sig reference to the string, containing base64-encoded
150 * result 150 * result
151 * @param slist the comma-separated list of fields to sign 151 * @param slist the comma-separated list of fields to sign
152 * @param prefix the string to prepend to parameter names 152 * @param prefix the string to prepend to parameter names
153 */ 153 */
154 void sign(secret_t secret,string& sig,const string& slist,const char *prefix=0) const; 154 void sign(secret_t secret,string& sig,const string& slist,const char *prefix=0) const;
155 155
156 /** 156 /**
157 * append parameters to the URL as a GET-request parameters. 157 * append parameters to the URL as a GET-request parameters.
158 * @param url the base URL 158 * @param url the base URL
159 * @param prefix the string to prepend to parameter names 159 * @param prefix the string to prepend to parameter names
160 * @return the ready-to-use location 160 * @return the ready-to-use location
161 */ 161 */
162 string append_query(const string& url,const char *prefix = "openid.") const; 162 string append_query(const string& url,const char *prefix = "openid.") const;
163 163
164 /** 164 /**
165 * make up a query string suitable for use in GET and POST 165 * make up a query string suitable for use in GET and POST
166 * requests. 166 * requests.
167 * @param prefix string to prened to parameter names 167 * @param prefix string to prened to parameter names
168 * @return query string 168 * @return query string
169 */ 169 */
170 string query_string(const char *prefix = "openid.") const; 170 string query_string(const char *prefix = "openid.") const;
171 }; 171 };
172 172
173 /** 173 /**
174 * dump the key/value pairs for the parameters to the stream. 174 * dump the key/value pairs for the parameters to the stream.
175 * @param o output stream 175 * @param o output stream
176 * @param p the parameters 176 * @param p the parameters
177 */ 177 */
178 ostream& operator << (ostream& o,const params_t& p); 178 ostream& operator << (ostream& o,const params_t& p);
179 179
180 namespace xrd { 180 namespace xrd {
181 181
182 struct priority_compare { 182 struct priority_compare {
183 inline bool operator()(long a,long b) const { 183 inline bool operator()(long a,long b) const {
184 return (a<0) ? false : (b<0) ? false : (a<b); 184 return (a<0) ? false : (b<0) ? true : (a<b);
185 } 185 }
186 }; 186 };
187 187
188 template <typename _DT> 188 template <typename _DT>
189 class priority_map : public multimap<long,_DT,priority_compare> { 189 class priority_map : public multimap<long,_DT,priority_compare> {
190 typedef multimap<long,_DT,priority_compare> map_type; 190 typedef multimap<long,_DT,priority_compare> map_type;
191 public: 191 public:
192 192
193 inline _DT& add(long priority,const _DT& d) { 193 inline _DT& add(long priority,const _DT& d) {
194 return insert(typename map_type::value_type(priority,d))->second; 194 return insert(typename map_type::value_type(priority,d))->second;
195 } 195 }
196 }; 196 };
197 197
198 typedef priority_map<string> canonical_ids_t; 198 typedef priority_map<string> canonical_ids_t;
199 typedef priority_map<string> local_ids_t; 199 typedef priority_map<string> local_ids_t;
200 typedef set<string> types_t; 200 typedef set<string> types_t;
201 typedef priority_map<string> uris_t; 201 typedef priority_map<string> uris_t;
202 202
203 class service_t { 203 class service_t {
204 public: 204 public:
205 types_t types; 205 types_t types;
206 uris_t uris; 206 uris_t uris;
207 local_ids_t local_ids; 207 local_ids_t local_ids;
208 string provider_id; 208 string provider_id;
209 209
210 void clear() { 210 void clear() {
211 types.clear(); 211 types.clear();
212 uris.clear(); local_ids.clear(); 212 uris.clear(); local_ids.clear();
213 provider_id.clear(); 213 provider_id.clear();
214 } 214 }
215 }; 215 };
216 typedef priority_map<service_t> services_t; 216 typedef priority_map<service_t> services_t;
217 217
218 class XRD_t { 218 class XRD_t {
219 public: 219 public:
220 time_t expires; 220 time_t expires;
221 221
222 canonical_ids_t canonical_ids; 222 canonical_ids_t canonical_ids;
223 local_ids_t local_ids; 223 local_ids_t local_ids;
224 services_t services; 224 services_t services;
225 string provider_id; 225 string provider_id;
226 226
227 void clear() { 227 void clear() {
228 expires = 0; 228 expires = 0;
229 canonical_ids.clear(); local_ids.clear(); 229 canonical_ids.clear(); local_ids.clear();
230 services.clear(); 230 services.clear();
231 provider_id.clear(); 231 provider_id.clear();
232 } 232 }
233 bool empty() const { 233 bool empty() const {
234 return 234 return
235 canonical_ids.empty() 235 canonical_ids.empty()
236 && local_ids.empty() 236 && local_ids.empty()
237 && services.empty(); 237 && services.empty();
238 } 238 }
239 239
240 }; 240 };
241 241
242 } 242 }
243 243
244} 244}
245 245
246#endif /* __OPKELE_TYPES_H */ 246#endif /* __OPKELE_TYPES_H */