diff --git a/build/source/actors/summa_actor/client.cpp b/build/source/actors/summa_actor/client.cpp index 46c06d1e6563e8c4c3afed2088169f7e49126c4e..b3af062480462abd517ccb5c9ccec91e44a25ce3 100644 --- a/build/source/actors/summa_actor/client.cpp +++ b/build/source/actors/summa_actor/client.cpp @@ -153,10 +153,6 @@ int Client_Container::findClientByID(int client_id) { throw "Cannot Find Client"; } -// void Client_Container::removeLostClient(int index) { -// this->client_list.erase(this->client_list.begin() + index); -// this->num_clients--; -// } std::optional<Client> Client_Container::findIdleClient() { for(int i = 0; i < this->num_clients; i++) { @@ -184,7 +180,11 @@ bool Client_Container::checkForLostClients() { void Client_Container::reconcileLostBatches(Batch_Container* batch_container) { - std::cout << "HERE\n"; + for(auto client = begin(this->lost_client_list); client != end(this->lost_client_list); ++client) { + batch_container->updateBatchStatus_LostClient(client->getCurrentBatchID()); + } + + this->lost_client_list.clear(); } std::string Client_Container::connectedClientsToString() { @@ -203,10 +203,6 @@ std::string Client_Container::lostClientsToString() { return out_string.str(); } -// void Client_Container::sendAllClientsHeartbeat(stateful_actor<summa_server_state>* self) { -// for (auto client = begin(this->connected_client_list); client != end(this->connected_client_list); ++client) -// self->send(client->getActor(), heartbeat_v); -// } diff --git a/build/source/actors/summa_actor/summa_server.cpp b/build/source/actors/summa_actor/summa_server.cpp index 482ea6ced155751d4ec20e26967f7f1ce97ceceb..ee08cccc5447a8eb0c336a12bfc83b74b53c2c3f 100644 --- a/build/source/actors/summa_actor/summa_server.cpp +++ b/build/source/actors/summa_actor/summa_server.cpp @@ -121,6 +121,18 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett // Loop Through All Clients To see if any are lost if (self->state.client_container->checkForLostClients()) { self->state.client_container->reconcileLostBatches(self->state.batch_container); + std::optional<Client> client = self->state.client_container->findIdleClient(); + if(client.has_value()) { + std::optional<Batch> new_batch = self->state.batch_container->assignBatch( + self->state.client_container->getHostname_ByClientID(client.value().getID()), + client.value().getActor()); + + if (new_batch.has_value()) { + + self->send(client.value().getActor(), new_batch.value()); + + } + } } sendClientsHeartbeat(self);