diff options
author | Ivan Shapovalov <intelfx@intelfx.name> | 2016-11-28 04:23:01 +0300 |
---|---|---|
committer | Ivan Shapovalov <intelfx@intelfx.name> | 2017-01-24 11:56:15 +0300 |
commit | 50e758a007b3a4e5700fbe5ef207bbb26b1fccf5 (patch) | |
tree | 1600b061a7d47d9d266c52ecdf8883c26e55060e /src/routine.hpp | |
parent | 6dc18c1c57d5fef75e7682b1fdb8268ec3786908 (diff) |
Routine: cache the database instance as well
This does not change much, but will become useful in next commits when
plugin support is introduced.
Diffstat (limited to 'src/routine.hpp')
-rw-r--r-- | src/routine.hpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/routine.hpp b/src/routine.hpp index 8e9fd54d..f366e4d9 100644 --- a/src/routine.hpp +++ b/src/routine.hpp @@ -35,11 +35,22 @@ class Routine { // Base class constructor. The user database is an optional extra database to override the // built-in database. // All heavy preparation work is done inside this constructor. + // NOTE: the caller must provide the same userDatabase for each combination of device, precision + // and routine list, otherwise the caching logic will break. explicit Routine(Queue &queue, EventPointer event, const std::string &name, const std::vector<std::string> &routines, const Precision precision, const std::vector<const Database::DatabaseEntry*> &userDatabase, std::initializer_list<const char *> source); + private: + + // Initializes program_, fetching cached program or building one + void InitProgram(std::initializer_list<const char *> source); + + // Initializes db_, fetching cached database or building one + void InitDatabase(const std::vector<std::string> &routines, + const std::vector<const Database::DatabaseEntry*> &userDatabase); + protected: // Non-static variable for the precision @@ -61,7 +72,7 @@ class Routine { Program program_; // Connection to the database for all the device-specific parameters - const Database db_; + Database db_; }; // ================================================================================================= |