From 6b754b324d821b53384647f91cbb9e94ef693952 Mon Sep 17 00:00:00 2001 From: KyleKlenk <kyle.c.klenk@gmail.com> Date: Wed, 9 Nov 2022 17:11:02 -0600 Subject: [PATCH] tested getting backup server to connect to fake client --- .../summa_actor/summa_backup_server.hpp | 1 + build/includes/summa_actor/summa_server.hpp | 4 +- .../summa_actor/summa_backup_server.cpp | 57 +++++++++++++------ .../actors/summa_actor/summa_client.cpp | 10 +++- .../actors/summa_actor/summa_server.cpp | 21 +++++-- 5 files changed, 68 insertions(+), 25 deletions(-) diff --git a/build/includes/summa_actor/summa_backup_server.hpp b/build/includes/summa_actor/summa_backup_server.hpp index 08033dd..e6f0b33 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 324b8f9..31a2c4a 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 00bfa1d..28ed666 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 05db534..c0a9f5d 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 def4f9e..0be313a 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 }, -- GitLab