From 4e52e1ba882c26b09941b52982fd9d597a160a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Fri, 21 Apr 2023 11:11:57 -0400 Subject: [PATCH] conversation_module: add possibility to bootstrap one conversation Change-Id: I388ceaffe716550c082bd18f07b8cde6d2498ba6 --- src/jamidht/conversation_module.cpp | 16 +++++++++++++--- src/jamidht/conversation_module.h | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp index b349fc6e51..9717578ed2 100644 --- a/src/jamidht/conversation_module.cpp +++ b/src/jamidht/conversation_module.cpp @@ -1264,10 +1264,9 @@ ConversationModule::loadConversations() } void -ConversationModule::bootstrap() +ConversationModule::bootstrap(const std::string& convId) { - std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_); - for (auto& [_, conv] : pimpl_->conversations_) { + auto bootstrap = [&](auto& conv) { if (conv) { #ifdef LIBJAMI_TESTABLE conv->onBootstrapStatus(pimpl_->bootstrapCbTest_); @@ -1275,6 +1274,17 @@ ConversationModule::bootstrap() conv->bootstrap( std::bind(&ConversationModule::Impl::bootstrapCb, pimpl_.get(), conv->id())); } + }; + std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_); + if (convId.empty()) { + for (auto& [_, conv] : pimpl_->conversations_) { + bootstrap(conv); + } + } else { + auto it = pimpl_->conversations_.find(convId); + if (it != pimpl_->conversations_.end()) { + bootstrap(it->second); + } } } void diff --git a/src/jamidht/conversation_module.h b/src/jamidht/conversation_module.h index 59d28770c0..dddedb6ac7 100644 --- a/src/jamidht/conversation_module.h +++ b/src/jamidht/conversation_module.h @@ -80,7 +80,7 @@ public: /** * Bootstrap swarm managers to other peers */ - void bootstrap(); + void bootstrap(const std::string& convId = ""); /** * Clear not removed fetch -- GitLab