Skip to content

Commit b7aea03

Browse files
committed
use r-value ref
1 parent 203725a commit b7aea03

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

examples/server/server.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1552,11 +1552,11 @@ struct server_queue {
15521552
std::condition_variable condition_tasks;
15531553

15541554
// callback functions
1555-
std::function<void(server_task&)> callback_new_task;
1555+
std::function<void(server_task&&)> callback_new_task;
15561556
std::function<void(void)> callback_update_slots;
15571557

15581558
// Add a new task to the end of the queue
1559-
int post(server_task & task, bool front = false) {
1559+
int post(server_task && task, bool front = false) {
15601560
std::unique_lock<std::mutex> lock(mutex_tasks);
15611561
GGML_ASSERT(task.id != -1);
15621562
// if this is cancel task make sure to clean up pending tasks
@@ -1565,16 +1565,16 @@ struct server_queue {
15651565
}
15661566
QUE_DBG("new task, id = %d, front = %d\n", task.id, front);
15671567
if (front) {
1568-
queue_tasks.push_front(std::move(task));
1568+
queue_tasks.push_front(task);
15691569
} else {
1570-
queue_tasks.push_back(std::move(task));
1570+
queue_tasks.push_back(task);
15711571
}
15721572
condition_tasks.notify_one();
15731573
return task.id;
15741574
}
15751575

15761576
// multi-task version of post()
1577-
int post(std::vector<server_task> & tasks, bool front = false) {
1577+
int post(std::vector<server_task> && tasks, bool front = false) {
15781578
std::unique_lock<std::mutex> lock(mutex_tasks);
15791579
for (auto & task : tasks) {
15801580
if (task.id == -1) {
@@ -1596,10 +1596,10 @@ struct server_queue {
15961596
}
15971597

15981598
// Add a new task, but defer until one slot is available
1599-
void defer(server_task & task) {
1599+
void defer(server_task && task) {
16001600
std::unique_lock<std::mutex> lock(mutex_tasks);
16011601
QUE_DBG("defer task, id = %d\n", task.id);
1602-
queue_tasks_deferred.push_back(std::move(task));
1602+
queue_tasks_deferred.push_back(task);
16031603
condition_tasks.notify_one();
16041604
}
16051605

@@ -1611,7 +1611,7 @@ struct server_queue {
16111611
}
16121612

16131613
// Register function to process a new task
1614-
void on_new_task(std::function<void(server_task&)> callback) {
1614+
void on_new_task(std::function<void(server_task&&)> callback) {
16151615
callback_new_task = std::move(callback);
16161616
}
16171617

@@ -1665,7 +1665,7 @@ struct server_queue {
16651665
lock.unlock();
16661666

16671667
QUE_DBG("processing task, id = %d\n", task.id);
1668-
callback_new_task(task);
1668+
callback_new_task(std::move(task));
16691669
}
16701670

16711671
// all tasks in the current loop is processed, slots data is now ready
@@ -2105,7 +2105,7 @@ struct server_context {
21052105
return true;
21062106
}
21072107

2108-
bool launch_slot_with_task(server_slot & slot, const server_task & task) {
2108+
bool launch_slot_with_task(server_slot & slot, const server_task && task) {
21092109
slot.reset();
21102110
slot.id_task = task.id;
21112111
slot.index = task.index;
@@ -2550,7 +2550,7 @@ struct server_context {
25502550
cancel_tasks.push_back(std::move(task));
25512551
}
25522552
// push to beginning of the queue, so it has highest priority
2553-
queue_tasks.post(cancel_tasks, true);
2553+
queue_tasks.post(std::move(cancel_tasks), true);
25542554
}
25552555

25562556
// receive the results from task(s)
@@ -2637,7 +2637,7 @@ struct server_context {
26372637
// Functions to process the task
26382638
//
26392639

2640-
void process_single_task(server_task & task) {
2640+
void process_single_task(server_task && task) {
26412641
switch (task.type) {
26422642
case SERVER_TASK_TYPE_COMPLETION:
26432643
case SERVER_TASK_TYPE_INFILL:
@@ -2651,17 +2651,17 @@ struct server_context {
26512651
if (slot == nullptr) {
26522652
// if no slot is available, we defer this task for processing later
26532653
SRV_DBG("no slot is available, defer task, id_task = %d\n", task.id);
2654-
queue_tasks.defer(task);
2654+
queue_tasks.defer(std::move(task));
26552655
break;
26562656
}
26572657
if (slot->is_processing()) {
26582658
// if requested slot is unavailable, we defer this task for processing later
26592659
SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id);
2660-
queue_tasks.defer(task);
2660+
queue_tasks.defer(std::move(task));
26612661
break;
26622662
}
26632663

2664-
if (!launch_slot_with_task(*slot, task)) {
2664+
if (!launch_slot_with_task(*slot, std::move(task))) {
26652665
SRV_ERR("failed to launch slot with task, id_task = %d\n", task.id);
26662666
break;
26672667
}
@@ -2740,7 +2740,7 @@ struct server_context {
27402740
if (slot->is_processing()) {
27412741
// if requested slot is unavailable, we defer this task for processing later
27422742
SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id);
2743-
queue_tasks.defer(task);
2743+
queue_tasks.defer(std::move(task));
27442744
break;
27452745
}
27462746

@@ -2776,7 +2776,7 @@ struct server_context {
27762776
if (slot->is_processing()) {
27772777
// if requested slot is unavailable, we defer this task for processing later
27782778
SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id);
2779-
queue_tasks.defer(task);
2779+
queue_tasks.defer(std::move(task));
27802780
break;
27812781
}
27822782

@@ -2819,7 +2819,7 @@ struct server_context {
28192819
if (slot->is_processing()) {
28202820
// if requested slot is unavailable, we defer this task for processing later
28212821
SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id);
2822-
queue_tasks.defer(task);
2822+
queue_tasks.defer(std::move(task));
28232823
break;
28242824
}
28252825

@@ -2871,7 +2871,7 @@ struct server_context {
28712871

28722872
server_task task(SERVER_TASK_TYPE_NEXT_RESPONSE);
28732873
task.id = queue_tasks.get_new_id();
2874-
queue_tasks.post(task);
2874+
queue_tasks.post(std::move(task));
28752875
}
28762876

28772877
// apply context-shift if needed
@@ -3636,7 +3636,7 @@ int main(int argc, char ** argv) {
36363636
server_task task(SERVER_TASK_TYPE_METRICS);
36373637
task.id = ctx_server.queue_tasks.get_new_id();
36383638
ctx_server.queue_results.add_waiting_task_id(task.id);
3639-
ctx_server.queue_tasks.post(task, true); // high-priority task
3639+
ctx_server.queue_tasks.post(std::move(task), true); // high-priority task
36403640

36413641
// get the result
36423642
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
@@ -3674,7 +3674,7 @@ int main(int argc, char ** argv) {
36743674
task.metrics_reset_bucket = true;
36753675

36763676
ctx_server.queue_results.add_waiting_task_id(task.id);
3677-
ctx_server.queue_tasks.post(task, true); // high-priority task
3677+
ctx_server.queue_tasks.post(std::move(task), true); // high-priority task
36783678

36793679
// get the result
36803680
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
@@ -3782,7 +3782,7 @@ int main(int argc, char ** argv) {
37823782
task.slot_action.filepath = filepath;
37833783

37843784
ctx_server.queue_results.add_waiting_task_id(task.id);
3785-
ctx_server.queue_tasks.post(task);
3785+
ctx_server.queue_tasks.post(std::move(task));
37863786

37873787
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
37883788
ctx_server.queue_results.remove_waiting_task_id(task.id);
@@ -3811,7 +3811,7 @@ int main(int argc, char ** argv) {
38113811
task.slot_action.filepath = filepath;
38123812

38133813
ctx_server.queue_results.add_waiting_task_id(task.id);
3814-
ctx_server.queue_tasks.post(task);
3814+
ctx_server.queue_tasks.post(std::move(task));
38153815

38163816
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
38173817
ctx_server.queue_results.remove_waiting_task_id(task.id);
@@ -3831,7 +3831,7 @@ int main(int argc, char ** argv) {
38313831
task.slot_action.slot_id = id_slot;
38323832

38333833
ctx_server.queue_results.add_waiting_task_id(task.id);
3834-
ctx_server.queue_tasks.post(task);
3834+
ctx_server.queue_tasks.post(std::move(task));
38353835

38363836
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
38373837
ctx_server.queue_results.remove_waiting_task_id(task.id);
@@ -3973,7 +3973,7 @@ int main(int argc, char ** argv) {
39733973
}
39743974

39753975
ctx_server.queue_results.add_waiting_tasks(tasks);
3976-
ctx_server.queue_tasks.post(tasks);
3976+
ctx_server.queue_tasks.post(std::move(tasks));
39773977

39783978
bool stream = json_value(data, "stream", false);
39793979
const auto task_ids = server_task::get_list_id(tasks);
@@ -4284,7 +4284,7 @@ int main(int argc, char ** argv) {
42844284
}
42854285

42864286
ctx_server.queue_results.add_waiting_tasks(tasks);
4287-
ctx_server.queue_tasks.post(tasks);
4287+
ctx_server.queue_tasks.post(std::move(tasks));
42884288

42894289
// get the result
42904290
std::unordered_set<int> task_ids = server_task::get_list_id(tasks);
@@ -4380,7 +4380,7 @@ int main(int argc, char ** argv) {
43804380
}
43814381

43824382
ctx_server.queue_results.add_waiting_tasks(tasks);
4383-
ctx_server.queue_tasks.post(tasks);
4383+
ctx_server.queue_tasks.post(std::move(tasks));
43844384

43854385
// get the result
43864386
std::unordered_set<int> task_ids = server_task::get_list_id(tasks);
@@ -4435,7 +4435,7 @@ int main(int argc, char ** argv) {
44354435
task.id = ctx_server.queue_tasks.get_new_id();
44364436
task.set_lora = parse_lora_request(ctx_server.params_base.lora_adapters, body);
44374437
ctx_server.queue_results.add_waiting_task_id(task.id);
4438-
ctx_server.queue_tasks.post(task);
4438+
ctx_server.queue_tasks.post(std::move(task));
44394439

44404440
server_task_result_ptr result = ctx_server.queue_results.recv(task.id);
44414441
ctx_server.queue_results.remove_waiting_task_id(task.id);
@@ -4582,8 +4582,8 @@ int main(int argc, char ** argv) {
45824582
common_chat_templates_source(ctx_server.chat_templates.get()),
45834583
common_chat_format_example(ctx_server.chat_templates.get(), ctx_server.params_base.use_jinja).c_str());
45844584

4585-
ctx_server.queue_tasks.on_new_task([&ctx_server](server_task & task) {
4586-
ctx_server.process_single_task(task);
4585+
ctx_server.queue_tasks.on_new_task([&ctx_server](server_task && task) {
4586+
ctx_server.process_single_task(std::move(task));
45874587
});
45884588

45894589
ctx_server.queue_tasks.on_update_slots([&ctx_server]() {

0 commit comments

Comments
 (0)