diff --git a/build/includes/global/message_atoms.hpp b/build/includes/global/message_atoms.hpp index 7f78f6b9947f7ac57813559d524514ffeebe10fe..b20a3693bd10cf54fe663abb0616c4fe338a638f 100644 --- a/build/includes/global/message_atoms.hpp +++ b/build/includes/global/message_atoms.hpp @@ -52,6 +52,7 @@ CAF_BEGIN_TYPE_ID_BLOCK(summa, first_custom_type_id) // Reciever: summa_actor // Summary: job_actor finished job CAF_ADD_ATOM(summa, done_job) + CAF_ADD_ATOM(summa, exit_msg) // Sender: // Reciever: // Summary: diff --git a/build/source/actors/hru_actor/hru_batch_actor.cpp b/build/source/actors/hru_actor/hru_batch_actor.cpp index 9cde3fd7c08a9afe95f84daf90ac11c228892367..52801e36b86bb817f0a452df82c72df191564733 100644 --- a/build/source/actors/hru_actor/hru_batch_actor.cpp +++ b/build/source/actors/hru_actor/hru_batch_actor.cpp @@ -6,10 +6,6 @@ behavior hru_batch_actor(stateful_actor<hru_batch_state>* self, int start_gru_local, int start_gru_global, int num_gru, HRU_Actor_Settings hru_actor_settings, caf::actor file_access_actor, caf::actor parent) { - // aout(self) << "HRU Batch Actor Started\n" - // << "\tStart GRU Local: " << start_gru_local << "\n" - // << "\tStart GRU Global: " << start_gru_global << "\n" - // << "\tNum GRU: " << num_gru << "\n"; self->state.file_access_actor = file_access_actor; self->state.parent = parent; @@ -45,6 +41,12 @@ behavior hru_batch_actor(stateful_actor<hru_batch_state>* self, self->send(self->state.parent, done_update_v); self->state.num_done = 0; } + }, + [=](exit_msg) { + for(auto& hru_actor : self->state.hru_actors) { + self->send_exit(hru_actor, exit_reason::user_shutdown); + } + self->quit(); } }; diff --git a/build/source/actors/job_actor/job_actor.cpp b/build/source/actors/job_actor/job_actor.cpp index 96336f83f7e7a358f78e7db356713e7e451e4192..4fb0ba91fa96c84d7dc78062e1b07c442b8309ad 100644 --- a/build/source/actors/job_actor/job_actor.cpp +++ b/build/source/actors/job_actor/job_actor.cpp @@ -65,15 +65,17 @@ behavior job_actor(stateful_actor<job_state>* self, job_init_fortran(self->state.job_actor_settings.file_manager_path.c_str(), &self->state.start_gru, &self->state.num_gru, &self->state.num_hru, &err); - if (err != 0) { aout(self) << "\nERROR: Job_Actor - job_init_fortran\n"; return {}; } + if (err != 0) { + aout(self) << "\nERROR: Job_Actor - job_init_fortran\n"; + return {}; + } // Spawn the file_access_actor. self->state.file_access_actor = self->spawn(file_access_actor, - self->state.start_gru, - self->state.num_gru, - self->state.file_access_actor_settings, - self); + self->state.start_gru, self->state.num_gru, + self->state.file_access_actor_settings, + self); aout(self) << "Job Actor Initialized \n"; @@ -151,7 +153,8 @@ behavior job_actor(stateful_actor<job_state>* self, if (err != 0) { aout(self) << "Job_Actor: Error Writing Output\n"; for (auto GRU : self->state.gru_container.gru_list) - self->send_exit(GRU->getGRUActor(), exit_reason::user_shutdown); + self->send(GRU->getGRUActor(), exit_msg_v); + // self->send_exit(GRU->getGRUActor(), exit_reason::user_shutdown); self->send_exit(self->state.file_access_actor, exit_reason::user_shutdown); diff --git a/build/source/actors/summa_actor/summa_actor.cpp b/build/source/actors/summa_actor/summa_actor.cpp index 9e378d6791da9ca63ece13d85dd3dcc7b1878580..fae8f31bf93adc6eb7fa9d0ddf25fb6cb0508550 100644 --- a/build/source/actors/summa_actor/summa_actor.cpp +++ b/build/source/actors/summa_actor/summa_actor.cpp @@ -117,6 +117,7 @@ behavior summa_actor(stateful_actor<summa_actor_state>* self, self->send(self->state.parent, done_batch_v, total_dur_sec, read_dur_sec, write_dur_sec); + exit(0); } },