184
184
auto runtime = location::service::Runtime::create(4);
186
const location::Configuration empty_provider_configuration;
188
std::set<location::Provider::Ptr> instantiated_providers;
186
location::service::DefaultConfiguration dc;
187
auto engine = dc.the_engine(std::set<location::Provider::Ptr>{}, dc.the_provider_selection_policy(), config.settings);
190
188
for (const std::string& provider : config.providers)
192
190
std::cout << "Instantiating and configuring: " << provider << std::endl;
196
auto p = location::ProviderFactory::instance().create_provider_for_name_with_config(
198
config.provider_options.count(provider) > 0 ?
199
config.provider_options.at(provider) : empty_provider_configuration);
202
instantiated_providers.insert(p);
204
throw std::runtime_error("Problem instantiating provider");
194
auto result = std::async(std::launch::async, [provider, config, engine] {
195
return location::ProviderFactory::instance().create_provider_for_name_with_config(
197
config.provider_options.count(provider) > 0 ?
198
config.provider_options.at(provider) : location::Configuration {},
199
[engine](Provider::Ptr provider)
201
engine->add_provider(provider);
206
205
} catch(const std::runtime_error& e)
208
207
std::cerr << "Issue instantiating provider: " << e.what() << std::endl;
215
214
runtime->start();
217
location::service::DefaultConfiguration dc;
219
216
location::service::Implementation::Configuration configuration
223
dc.the_engine(instantiated_providers, dc.the_provider_selection_policy(), config.settings),
224
221
dc.the_permission_manager(config.outgoing),
225
222
location::service::Harvester::Configuration