From fa2210652af7dea17e404f038c38efd745f5186a Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Mon, 2 Sep 2024 13:58:56 +0200 Subject: [PATCH] no more "mutable" lambda --- examples/server/server.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index e7ad0f07b..f34fea846 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -547,14 +547,8 @@ struct server_response { waiting_task_ids.erase(id_task); } - void remove_waiting_tasks(std::vector & tasks) { - for (const auto & t : tasks) { - remove_waiting_task_id(t.id); - } - } - // This function blocks the thread until there is a response for one of the id_tasks - server_task_result recv(std::unordered_set & id_tasks) { + server_task_result recv(const std::unordered_set & id_tasks) { while (true) { std::unique_lock lock(mutex_results); condition_results.wait(lock, [&]{ @@ -1539,7 +1533,7 @@ struct server_context { return tasks; } - void cancel_tasks(std::unordered_set & id_tasks) { + void cancel_tasks(const std::unordered_set & id_tasks) { std::vector cancel_tasks; cancel_tasks.reserve(id_tasks.size()); for (const auto & id_task : id_tasks) { @@ -1555,7 +1549,7 @@ struct server_context { } // receive the results from task(s) created by create_tasks_cmpl - void receive_cmpl_results(std::unordered_set & id_tasks, std::function&)> result_handler, std::function error_handler) { + void receive_cmpl_results(const std::unordered_set & id_tasks, std::function&)> result_handler, std::function error_handler) { // TODO: currently, there is no way to detect the client has cancelled the request std::vector results(id_tasks.size()); for (size_t i = 0; i < id_tasks.size(); i++) { @@ -1574,7 +1568,7 @@ struct server_context { } // receive the results from task(s) created by create_tasks_cmpl, in stream mode - void receive_cmpl_results_stream(std::unordered_set & id_tasks, std::function result_handler, std::function error_handler) { + void receive_cmpl_results_stream(const std::unordered_set & id_tasks, std::function result_handler, std::function error_handler) { size_t n_finished = 0; while (true) { server_task_result result = queue_results.recv(id_tasks); @@ -2966,7 +2960,7 @@ int main(int argc, char ** argv) { ctx_server.queue_tasks.post(tasks); bool stream = json_value(data, "stream", false); - std::unordered_set task_ids = server_task::get_list_id(tasks); + const auto task_ids = server_task::get_list_id(tasks); if (!stream) { ctx_server.receive_cmpl_results(task_ids, [&](std::vector & results) { @@ -2985,7 +2979,7 @@ int main(int argc, char ** argv) { res_error(res, error_data); }); } else { - const auto chunked_content_provider = [task_ids, &ctx_server](size_t, httplib::DataSink & sink) mutable { + const auto chunked_content_provider = [task_ids, &ctx_server](size_t, httplib::DataSink & sink) { ctx_server.receive_cmpl_results_stream(task_ids, [&](server_task_result result) -> bool { return server_sent_event(sink, "data", result.data); }, [&](json error_data) { @@ -3022,7 +3016,7 @@ int main(int argc, char ** argv) { ctx_server.queue_tasks.post(tasks); bool stream = json_value(data, "stream", false); - std::unordered_set task_ids = server_task::get_list_id(tasks); + const auto task_ids = server_task::get_list_id(tasks); const auto completion_id = gen_chatcmplid(); if (!stream) { @@ -3034,7 +3028,7 @@ int main(int argc, char ** argv) { res_error(res, error_data); }); } else { - const auto chunked_content_provider = [task_ids, &ctx_server, completion_id](size_t, httplib::DataSink & sink) mutable { + const auto chunked_content_provider = [task_ids, &ctx_server, completion_id](size_t, httplib::DataSink & sink) { ctx_server.receive_cmpl_results_stream(task_ids, [&](server_task_result result) -> bool { std::vector result_array = format_partial_response_oaicompat(result.data, completion_id); for (auto & event_data : result_array) {