CAF Promise Result - PullRequest
       9

CAF Promise Result

0 голосов
/ 02 июня 2018

В CAF ответные обещания позволяют субъекту отправлять и получать другие сообщения до ответа на конкретный запрос.Моя проблема в том, как использовать результат этого обещания.

// function-based, statically typed, event-based API
  adder::behavior_type calculator_master(adder::pointer self) {
  auto w = self->spawn(worker);
   return {
[=](add_atom x, int y, int z) -> result<int> {
  auto rp = self->make_response_promise<int>();
  self->request(w, infinite, x, y, z).then([=](int result) mutable {
    rp.deliver(result);
  });
  return rp;
}

};}

Мне нужно использовать значение rp перед оператором return.Пожалуйста, дайте мне знать, если у вас есть идеи

1 Ответ

0 голосов
/ 04 июня 2018

Я просто разделяю некоторые из моих пониманий.

Обещание ответа не совсем то же самое, что и будущее / обещание (например, std :: future и std :: обещание), поэтому вы не можете использовать обещание ответа при использованиибудущее / обещание.

Одно из применений ответного обещания - ответить отправителю, пока задание еще не выполнено.Предполагается, что субъект A отправляет запрос субъекту B, но B не обрабатывает запрос.B доставляет запрос другому субъекту C, а C обрабатывает запрос.В этом случае B перенаправляет запрос на C и должен что-то ответить на A.B нельзя заблокировать и ждать C, иначе B не сможет обработать новые запросы.В конце B отправляет ответное обещание на A.Ответное обещание, созданное B, фактически используется A, так что A может ждать результата C.

PS. Печально, что у меня недостаточно репутации, чтобы комментировать.

...