diff --git a/build/includes/summa_actor/summa_backup_server.hpp b/build/includes/summa_actor/summa_backup_server.hpp index 08033dd07b3466e15a884e636df282b42ea4f037..e6f0b33032abb1dd483b2202176ba5193d41d87d 100644 --- a/build/includes/summa_actor/summa_backup_server.hpp +++ b/build/includes/summa_actor/summa_backup_server.hpp @@ -8,6 +8,7 @@ namespace caf { struct summa_backup_state { strong_actor_ptr current_server; std::string hostname; + actor backup; }; behavior summa_backup_server(stateful_actor<summa_backup_state>* self); diff --git a/build/includes/summa_actor/summa_server.hpp b/build/includes/summa_actor/summa_server.hpp index 324b8f9c648dc95ab844beb3ad1e6f25edb583ea..31a2c4a71c5caf17b29f0d2e0f420a3cb13b215d 100644 --- a/build/includes/summa_actor/summa_server.hpp +++ b/build/includes/summa_actor/summa_server.hpp @@ -12,8 +12,8 @@ namespace caf { struct summa_server_state { - actor backup_server; - + actor backup_server = nullptr; + actor backup_server2 = nullptr; int num_clients; int batches_remaining = 0; int batches_solved = 0; diff --git a/build/source/actors/summa_actor/summa_backup_server.cpp b/build/source/actors/summa_actor/summa_backup_server.cpp index 00bfa1d3ae75a051b4a45c95e1d4312085fd5c14..28ed666ca9e132e6f1db85e0e5080f430da0bebb 100644 --- a/build/source/actors/summa_actor/summa_backup_server.cpp +++ b/build/source/actors/summa_actor/summa_backup_server.cpp @@ -12,17 +12,20 @@ behavior summa_backup_server(stateful_actor<summa_backup_state>* self) { self->set_down_handler([=](const down_msg& dm){ if(dm.source == self->state.current_server) { aout(self) << "*** Lost Connection to Server" << std::endl; + uint16_t port = 4444; + std::string host = "a0449745d77d"; + connecting(self, host, port); - auto new_server = self->spawn(backup_server); + // auto new_server = self->spawn(backup_server); - int port = 4444; - aout(self) << "Attempting to publish backup server on port - " << port << std::endl; - auto is_port = io::publish(new_server, port); - if (!is_port) { - std::cerr << "********PUBLISH FAILED*******" << to_string(is_port.error()) << "\n"; - return; - } - aout(self) << "Successfully Published summa_server_actor on port " << *is_port << "\n"; + // int port = 4444; + // aout(self) << "Attempting to publish backup server on port - " << port << std::endl; + // auto is_port = io::publish(new_server, port); + // if (!is_port) { + // std::cerr << "********PUBLISH FAILED*******" << to_string(is_port.error()) << "\n"; + // return; + // } + // aout(self) << "Successfully Published summa_server_actor on port " << *is_port << "\n"; // self->state.current_server = nullptr; // self->become(unconnected(self)); @@ -79,21 +82,41 @@ behavior running(stateful_actor<summa_backup_state>* self, const actor& server_a return { [=](connect_as_backup) { aout(self) << "Successfully connected to current server\n"; - } + }, + [=](connect_as_backup, actor other_actor, int num_to_send) { + aout(self) << "Received other actor Can we send them a message?\n"; + self->state.backup = other_actor; + self->send(self->state.backup, connect_as_backup_v, num_to_send); - }; -} + }, + + [=](connect_as_backup, int num_to_send) { + aout(self) << "Received message from the other actor\n"; + aout(self) << "We Got the number " << num_to_send << std::endl; + std::this_thread::sleep_for(std::chrono::seconds(2)); + num_to_send++; + self->send(self->state.backup, connect_as_backup_v, num_to_send); + + }, -behavior backup_server(stateful_actor<summa_backup_state>* self) { - aout(self) << "Published\n"; - return { - [=] (connect_as_backup) { - } }; } +// behavior backup_server(stateful_actor<summa_backup_state>* self) { +// aout(self) << "Published\n"; +// return { +// [=] (connect_as_backup) { + +// } + + + + +// }; +// } + diff --git a/build/source/actors/summa_actor/summa_client.cpp b/build/source/actors/summa_actor/summa_client.cpp index 05db5347540c50ccc3c9f77a43506baa5aeaa27e..c0a9f5d1831e18e6e68f7f06b58009c022c86b9a 100644 --- a/build/source/actors/summa_actor/summa_client.cpp +++ b/build/source/actors/summa_actor/summa_client.cpp @@ -18,7 +18,7 @@ behavior summa_client(stateful_actor<summa_client_state>* self, std::optional<st if(dm.source == self->state.current_server) { aout(self) << "*** Lost Connection to Server" << std::endl; self->state.current_server = nullptr; - self->become(unconnected(self)); + // self->become(unconnected(self)); } }); return unconnected(self); @@ -116,7 +116,13 @@ behavior running(stateful_actor<summa_client_state>* self, const actor& server_a self->state.current_batch.updateReadTime(read_time); self->state.current_batch.updateWriteTime(write_time); - self->send(server_actor, done_batch_v, self, self->state.client_id, self->state.current_batch); + if(self->state.current_server == nullptr) { + aout(self) << "Maybe We Should not Send this\n"; + } else { + self->send(server_actor, done_batch_v, self, self->state.client_id, self->state.current_batch); + + } + }, [=](heartbeat) { diff --git a/build/source/actors/summa_actor/summa_server.cpp b/build/source/actors/summa_actor/summa_server.cpp index def4f9efa9228a7390cbcda538a199d7f41641c6..0be313aff16675e3ec5dcc4614bf5f92ed87d7cf 100644 --- a/build/source/actors/summa_actor/summa_server.cpp +++ b/build/source/actors/summa_actor/summa_server.cpp @@ -20,11 +20,16 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett aout(self) << "Summa Server has Started \n"; self->set_down_handler([=](const down_msg& dm) { - aout(self) << "Lost A Client\n"; + + if (dm.source == self->state.backup_server) { + aout(self) << "Lost Client 1\n"; + } + + if (dm.source == self->state.backup_server2) { + aout(self) << "Lost Client 2\n"; + } }); - - self->state.distributed_settings = distributed_settings; self->state.summa_actor_settings = summa_actor_settings; self->state.file_access_actor_settings = file_access_actor_settings; @@ -72,7 +77,15 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett [=](connect_as_backup, actor backup_server) { aout(self) << "Received Connection Request From a backup server\n"; - self->state.backup_server = backup_server; + if (self->state.backup_server == nullptr) { + aout(self) << "Setup Backup Server\n"; + self->state.backup_server = backup_server; + } else if (self->state.backup_server2 == nullptr) { + aout(self) << "Setup Backup Server 2\n"; + self->state.backup_server2 = backup_server; + self->send(self->state.backup_server, connect_as_backup_v, self->state.backup_server2, 56); + self->send(self->state.backup_server2, connect_as_backup_v, self->state.backup_server, 89); + } self->monitor(backup_server); self->send(self->state.backup_server, connect_as_backup_v); // confirm connection },