~sil2100/location-service/gps-arm64

« back to all changes in this revision

Viewing changes to src/location_service/com/ubuntu/location/engine.cpp

  • Committer: Thomas Voß
  • Date: 2013-05-28 14:20:45 UTC
  • Revision ID: thomas.voss@canonical.com-20130528142045-kq5umqdmm4o53vwk
Initial push.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "com/ubuntu/location/engine.h"
 
2
 
 
3
#include <stdexcept>
 
4
 
 
5
namespace cul = com::ubuntu::location;
 
6
 
 
7
cul::Engine::Engine(
 
8
    const std::set<cul::Provider::Ptr>& initial_providers,
 
9
    const cul::ProviderSelectionPolicy::Ptr& provider_selection_policy)
 
10
        : providers(initial_providers),
 
11
          provider_selection_policy(provider_selection_policy)
 
12
{
 
13
    if (!provider_selection_policy)
 
14
        std::runtime_error("Cannot construct an engine given a null ProviderSelectionPolicy");
 
15
}
 
16
 
 
17
cul::ProviderSelection cul::Engine::determine_provider_selection_for_criteria(const cul::Criteria& criteria)
 
18
{
 
19
    return provider_selection_policy->determine_provider_selection_from_set_for_criteria(criteria, providers);
 
20
}
 
21
 
 
22
bool cul::Engine::has_provider(const cul::Provider::Ptr& provider) noexcept
 
23
{
 
24
    return providers.count(provider) > 0;
 
25
}
 
26
 
 
27
void cul::Engine::add_provider(const cul::Provider::Ptr& provider)
 
28
{
 
29
    if (!provider)
 
30
        throw std::runtime_error("Cannot add null provider");
 
31
    
 
32
    providers.insert(provider);
 
33
}
 
34
 
 
35
void cul::Engine::remove_provider(const cul::Provider::Ptr& provider) noexcept
 
36
{
 
37
    providers.erase(provider);
 
38
}
 
39