From 0f3367432c5b0f1521f1786205e23ae3616cf9b8 Mon Sep 17 00:00:00 2001
From: KyleKlenk <kyle.c.klenk@gmail.com>
Date: Thu, 14 Mar 2024 10:25:05 -0600
Subject: [PATCH] Add new atom and handle exit message in hru_batch_actor and
 summa_actor

---
 build/includes/global/message_atoms.hpp           |  1 +
 build/source/actors/hru_actor/hru_batch_actor.cpp | 10 ++++++----
 build/source/actors/job_actor/job_actor.cpp       | 15 +++++++++------
 build/source/actors/summa_actor/summa_actor.cpp   |  1 +
 4 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/build/includes/global/message_atoms.hpp b/build/includes/global/message_atoms.hpp
index 7f78f6b..b20a369 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 9cde3fd..52801e3 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 96336f8..4fb0ba9 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 9e378d6..fae8f31 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);
       }
     },
 
-- 
GitLab