From c02f4750e74ff28ba6b7dcabe16894c88a5aa359 Mon Sep 17 00:00:00 2001 From: kck540 <kyle.klenk@usask.ca> Date: Mon, 6 Jun 2022 15:59:52 -0400 Subject: [PATCH] Added output Structure size for file_access_actor to config file --- build/source/actors/FileAccess.h | 4 +++- build/source/actors/FileAccessActor.h | 34 +++++++++++++++++++++++++-- build/source/actors/JobActor.h | 4 +++- config/configuration.py | 4 ++++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/build/source/actors/FileAccess.h b/build/source/actors/FileAccess.h index 01bdfde..c1167db 100644 --- a/build/source/actors/FileAccess.h +++ b/build/source/actors/FileAccess.h @@ -9,6 +9,8 @@ #include <vector> #include <chrono> #include "global.h" +#include "json.hpp" + class forcingFile { private: @@ -50,7 +52,7 @@ struct file_access_state { void *handle_forcFileInfo = new_handle_file_info(); // Handle for the forcing file information void *handle_ncid = new_handle_var_i(); // output file ids OutputManager *output_manager; - int num_vectors_in_output_manager = 8; + int num_vectors_in_output_manager; int num_steps; int outputStrucSize; int stepsInCurrentFile; diff --git a/build/source/actors/FileAccessActor.h b/build/source/actors/FileAccessActor.h index 0fe741b..39408ff 100644 --- a/build/source/actors/FileAccessActor.h +++ b/build/source/actors/FileAccessActor.h @@ -4,19 +4,25 @@ #include "FileAccess.h" using namespace caf; +using json = nlohmann::json; + + void initalizeFileAccessActor(stateful_actor<file_access_state>* self); int writeOutput(stateful_actor<file_access_state>* self, int indxGRU, int indxHRU, int numStepsToWrite, int returnMessage, caf::actor actorRef); int readForcing(stateful_actor<file_access_state>* self, int currentFile); int write(stateful_actor<file_access_state>* self, int listIndex); +int parseSettings(stateful_actor<file_access_state>* self, std::string configPath); + + behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU, int numGRU, - int outputStrucSize, actor parent) { + int outputStrucSize, std::string configPath, actor parent) { // Set File_Access_Actor variables self->state.parent = parent; self->state.numGRU = numGRU; self->state.startGRU = startGRU; self->state.outputStrucSize = outputStrucSize; - + parseSettings(self, configPath); aout(self) << "\nFile Access Actor Started\n"; initalizeFileAccessActor(self); @@ -330,6 +336,30 @@ int readForcing(stateful_actor<file_access_state>* self, int currentFile) { } +int parseSettings(stateful_actor<file_access_state>* self, std::string configPath) { + json settings; + std::string SummaActorsSettigs = "/Summa_Actors_Settings.json"; + std::ifstream settings_file(configPath + SummaActorsSettigs); + settings_file >> settings; + settings_file.close(); + + if (settings.find("FileAccessActor") != settings.end()) { + json FileAccessActorConfig = settings["FileAccessActor"]; + // Find the File Manager Path + if (FileAccessActorConfig.find("num_vectors_in_output_manager") != FileAccessActorConfig.end()) { + self->state.num_vectors_in_output_manager = FileAccessActorConfig["num_vectors_in_output_manager"]; + } else { + aout(self) << "Error Finding FileManagerPath - Exiting as this is needed\n"; + return -1; + } + + return 0; + } else { + aout(self) << "Error Finding JobActor in JSON file - Exiting as there is no path for the fileManger\n"; + return -1; + } +} + #endif \ No newline at end of file diff --git a/build/source/actors/JobActor.h b/build/source/actors/JobActor.h index d2087dd..890bfde 100644 --- a/build/source/actors/JobActor.h +++ b/build/source/actors/JobActor.h @@ -39,7 +39,9 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, // Spawn the file_access_actor. This will return the number of forcing files we are working with self->state.file_access_actor = self->spawn(file_access_actor, self->state.startGRU, self->state.numGRU, - self->state.outputStrucSize, self); + self->state.outputStrucSize, self->state.configPath, self); + + aout(self) << "Job Actor Initalized \n"; return { diff --git a/config/configuration.py b/config/configuration.py index 4381495..d126391 100644 --- a/config/configuration.py +++ b/config/configuration.py @@ -54,6 +54,10 @@ def create_init_config(): "OuputStructureSize": 1, "maxGRUPerJob": 1 }, + + "FileAccessActor": { + "num_vectors_in_output_manager": 1 + }, "JobActor": { "FileManagerPath": "", -- GitLab