00001 #ifndef SAGA_PACKAGES_SD_DISCOVERER_HPP
00002
00003 #define SAGA_PACKAGES_SD_DISCOVERER_HPP
00004
00005
00006 #include <saga/saga/util.hpp>
00007 #include <saga/saga/base.hpp>
00008 #include <saga/saga/types.hpp>
00009 #include <saga/saga/session.hpp>
00010 #include <saga/saga/call.hpp>
00011 #include <saga/saga/exception.hpp>
00012 #include <saga/saga/url.hpp>
00013
00014 #include <saga/saga/packages/sd/config.hpp>
00015 #include <saga/saga/packages/sd/service_description.hpp>
00016
00018 namespace saga
00019 {
00020 namespace sd {
00021
00023
00178 class SAGA_SD_PACKAGE_EXPORT discoverer
00179 : public saga::object
00180 {
00181
00182 public:
00183
00184 private:
00185
00186 SAGA_CALL_CREATE_PRIV_2(session const&, saga::url)
00187
00188 SAGA_CALL_PRIV_2 (list_services, std::string, std::string)
00189 SAGA_CALL_PRIV_3 (list_services, std::string, std::string, std::string)
00190
00191 protected:
00192 TR1::shared_ptr <saga::impl::discoverer> get_impl_sp (void) const;
00193 saga::impl::discoverer* get_impl (void) const;
00194 friend class saga::impl::discoverer;
00195 explicit discoverer(saga::impl::discoverer* impl)
00196 SAGA_THROW_SPEC(throw(saga::not_implemented,
00197 saga::no_success));
00198
00199 public:
00213 explicit discoverer(saga::url loc = saga::url())
00214 SAGA_THROW_SPEC(throw(saga::not_implemented,
00215 saga::no_success));
00216
00232 explicit discoverer(session const& s, saga::url loc = saga::url())
00233 SAGA_THROW_SPEC(throw(saga::not_implemented,
00234 saga::no_success));
00235
00236
00240 ~discoverer (void) SAGA_THROW_SPEC(throw());
00241
00257 static discoverer create(session const& s, saga::url loc = saga::url())
00258 SAGA_THROW_SPEC(throw(saga::not_implemented,
00259 saga::no_success))
00260 {
00261 return discoverer(s, loc);
00262 }
00263 SAGA_CALL_CREATE_2_DEF_1(session const&, saga::url, saga::url())
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278 static discoverer create(saga::url loc = saga::url())
00279 SAGA_THROW_SPEC(throw(saga::not_implemented,
00280 saga::no_success))
00281 {
00282 return discoverer(loc);
00283 }
00284
00285 template <typename Tag>
00286 static saga::task create(saga::url loc = saga::url())
00287 {
00288 return create<Tag>(saga::detail::get_the_session(), loc);
00289 }
00290
00291
00292 discoverer& operator= (saga::object const& o)
00293 SAGA_THROW_SPEC(throw());
00294
00295
00296
00335 std::vector<saga::sd::service_description>
00336 list_services(std::string service_filter,
00337 std::string authz_filter,
00338 std::string data_filter)
00339 SAGA_THROW_SPEC(throw(saga::bad_parameter,
00340 saga::authorization_failed,
00341 saga::authentication_failed,
00342 saga::timeout,
00343 saga::no_success))
00344 {
00345 saga::task t = list_servicespriv(service_filter,
00346 authz_filter,
00347 data_filter,
00348 saga::task_base::Sync());
00349 return t.get_result<std::vector<saga::sd::service_description> >();
00350 }
00351 SAGA_CALL_PUB_3_DEF_0 (list_services, std::string, std::string, std::string)
00352
00353
00390 std::vector<saga::sd::service_description>
00391 list_services(std::string service_filter,
00392 std::string data_filter)
00393 SAGA_THROW_SPEC(throw(saga::bad_parameter,
00394 saga::authorization_failed,
00395 saga::authentication_failed,
00396 saga::timeout,
00397 saga::no_success))
00398 {
00399 saga::task t = list_servicespriv(service_filter,
00400 data_filter,
00401 saga::task_base::Sync());
00402 return t.get_result<std::vector<saga::sd::service_description> >();
00403 }
00404 SAGA_CALL_PUB_2_DEF_0 (list_services, std::string, std::string)
00405 };
00406 }
00407 }
00409 #endif