|
388 | 388 | <span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">)</span><span class="w"></span> |
389 | 389 | <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"1"</span><span class="p">;</span><span class="w"></span> |
390 | 390 | <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">another_async_method</span><span class="p">()</span><span class="w"></span> |
391 | | -<span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"2"</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"></span> |
392 | | -<span class="w"> </span><span class="p">[](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception })</span> |
| 391 | +<span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"2"</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"></span> |
| 392 | +<span class="w"> </span><span class="p">[](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception</span> |
| 393 | +<span class="w"> </span><span class="p">})</span><span class="w"></span> |
393 | 394 | <span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"3"</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"></span> |
394 | | -<span class="w"> </span><span class="p">[](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception });</span> |
| 395 | +<span class="w"> </span><span class="p">[](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception</span> |
| 396 | +<span class="w"> </span><span class="p">});</span><span class="w"></span> |
395 | 397 | <span class="w"> </span><span class="p">})</span><span class="w"></span> |
396 | | -<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception });</span> |
| 398 | +<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception</span> |
| 399 | +<span class="w"> </span><span class="p">});</span><span class="w"></span> |
397 | 400 | </pre></div> |
398 | 401 | </div> |
399 | 402 | </p> |
|
417 | 420 | <p>The errors are consumed by the provided error callback function object. If the asynchronous operation is resolved with an error, the chained async operations cannot be executed and error callbacks are invoked. By using the <a class="reference internal" href="#classdolbyio_1_1comms_1_1detail_1_1async__result_1a7892de3d365664d20695deb1d710c2d7"><span class="std std-ref">consume_errors()</span></a> call, the error propagation can be stopped. The caller captures the generated error and replaces the error with a result that is propagated to subsequent asynchronous operations. If the callback throws an error, that error is propagated to subsequent async results instead of the captured error. The callback function returns values of type T.</p> |
418 | 421 | <p>This method consumes the current <a class="reference internal" href="#classdolbyio_1_1comms_1_1detail_1_1async__result"><span class="std std-ref">async_result</span></a> and changes its state to <code class="docutils literal notranslate"><span class="pre">finalized</span></code>.</p> |
419 | 422 | <p>This method constructs a new <a class="reference internal" href="#classdolbyio_1_1comms_1_1detail_1_1async__result"><span class="std std-ref">async_result</span></a> of the same type as the current <a class="reference internal" href="#classdolbyio_1_1comms_1_1detail_1_1async__result"><span class="std std-ref">async_result</span></a>’s type.</p> |
420 | | -<p><div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">method_returns_async_result</span><span class="p">().</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="c1">// handle success })</span> |
421 | | -<span class="w"> </span><span class="p">.</span><span class="n">consume_errors</span><span class="p">(([]</span><span class="k">auto</span><span class="o">&&</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// handle</span> |
422 | | -<span class="n">exception</span><span class="w"> </span><span class="p">})</span><span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">another_async_method</span><span class="p">();</span><span class="w"> </span><span class="p">})</span><span class="w"></span> |
423 | | -<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// handle exception</span> |
424 | | -<span class="p">});</span><span class="w"></span> |
| 423 | +<p><div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="n">method_returns_async_result</span><span class="p">().</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="c1">// handle success</span> |
| 424 | +<span class="w"> </span><span class="p">})</span><span class="w"></span> |
| 425 | +<span class="w"> </span><span class="p">.</span><span class="n">consume_errors</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// handle exception</span> |
| 426 | +<span class="w"> </span><span class="p">})</span><span class="w"></span> |
| 427 | +<span class="w"> </span><span class="p">.</span><span class="n">then</span><span class="p">([](){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">another_async_method</span><span class="p">();</span><span class="w"> </span><span class="p">})</span><span class="w"></span> |
| 428 | +<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// handle exception</span> |
| 429 | +<span class="w"> </span><span class="p">});</span><span class="w"></span> |
425 | 430 | </pre></div> |
426 | 431 | </div> |
427 | 432 | </p> |
|
443 | 448 | <p>This method consumes the current <a class="reference internal" href="#classdolbyio_1_1comms_1_1detail_1_1async__result"><span class="std std-ref">async_result</span></a> and changes its state to <code class="docutils literal notranslate"><span class="pre">finalized</span></code>.</p> |
444 | 449 | <p>This method does not return anything and should be invoked to close the async operations chain. In order to handle errors in the middle of the async operations chain, use the local error callbacks or the consume errors callback.</p> |
445 | 450 | <p>The final error callback is allowed to throw exceptions of its own, but these exceptions are caught and ignored.</p> |
446 | | -<p><div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">method_returns_async_result</span><span class="p">().</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="c1">// handle success })</span> |
447 | | -<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and</span> |
448 | | -<span class="n">handle</span><span class="w"> </span><span class="n">exception</span><span class="w"> </span><span class="p">});</span><span class="w"></span> |
| 451 | +<p><div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="n">method_returns_async_result</span><span class="p">().</span><span class="n">then</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="p">){</span><span class="w"> </span><span class="c1">// handle success</span> |
| 452 | +<span class="w"> </span><span class="p">})</span><span class="w"></span> |
| 453 | +<span class="w"> </span><span class="p">.</span><span class="n">on_error</span><span class="p">([](</span><span class="k">auto</span><span class="o">&&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// rethrow and handle exception</span> |
| 454 | +<span class="w"> </span><span class="p">});</span><span class="w"></span> |
449 | 455 | </pre></div> |
450 | 456 | </div> |
451 | 457 | </p> |
|
0 commit comments