GENIE
execution_policy.cc
Go to the documentation of this file.
1 #include <iostream>
2 
3 #include <genie/utility/init.h>
8 
9 #include "execution_policy.h"
10 
11 using namespace genie;
12 using namespace std;
13 
14 shared_ptr<ExecutionPolicy> genie::MakePolicy(const Config& config)
15 {
16  config.Validate();
17 
18  // build an ExecutionPolicy
19  shared_ptr<ExecutionPolicy> generated_policy;
20  if (config.IsQueryRangeSet())
21  {
23  policy->SetK(config.GetK());
24  policy->SetNumOfQueries(config.GetNumOfQueries());
25  policy->SetQueryRange(config.GetQueryRange());
26  generated_policy = shared_ptr<execution_policy::SingleRangeExecutionPolicy>(policy);
27  }
28  else
29  {
31  policy->SetK(config.GetK());
32  policy->SetNumOfQueries(config.GetNumOfQueries());
33  generated_policy = shared_ptr<execution_policy::SingleValueExecutionPolicy>(policy);
34  }
35 
36  // validate the policy
37  if (generated_policy)
38  {
39  generated_policy->Validate(); // will throw exception if the configuration is invalid
40  genie::utility::Init(const_cast<Config&>(config));
41  return generated_policy;
42  }
43  else
44  throw exception::InvalidConfigurationException("No execution policy is available for the configuration");
45 }
46 
47 void genie::ExecutionPolicy::SetK(const uint32_t k)
48 {
49  k_ = k;
50 }
51 
52 void genie::ExecutionPolicy::SetNumOfQueries(const uint32_t num_of_queries)
53 {
54  num_of_queries_ = num_of_queries;
55 }
56 
58 {
59  return num_of_queries_;
60 }
61 
63 {
66 }
void SetNumOfQueries(const uint32_t num_of_queries)
Sets the number of query.
This is the top-level namespace of the project.
virtual void Validate()
Checks whether the given search parameters are in valid range.
void Validate() const
Validate that all required options are set.
Definition: config.cc:88
void ValidateNumOfQueries(uint32_t num_of_queries)
Definition: validation.cc:13
void Init(genie::Config &config)
Definition: init.cu:7
uint32_t GetK() const
Return K.
Definition: config.cc:10
uint32_t GetQueryRange() const
Return the range used in range-based search.
Definition: config.cc:15
void SetQueryRange(const uint32_t query_range)
Definition: single_range.cc:36
uint32_t GetNumOfQueries() const
Returns the number of query.
Config class holds all user configurable settings of GENIE.
Definition: config.h:20
std::shared_ptr< ExecutionPolicy > MakePolicy(const Config &config)
Builds and returns a policy according to the configurations.
bool IsQueryRangeSet() const
Return whether the query range has been set.
Definition: config.cc:78
uint32_t GetNumOfQueries() const
Return the number of query to search.
Definition: config.cc:20
void SetK(const uint32_t k)
Sets K.