From 4a18c13ec0cd3a13e7400e1f66e6d2bc8348148b Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 25 Nov 2024 17:12:08 +0000 Subject: [PATCH] Re-generate Github Pages --- docs/.nojekyll | 0 docs/annotated.html | 173 ++ docs/annotated_dup.js | 41 + docs/bc_s.png | Bin 0 -> 645 bytes docs/bc_sd.png | Bin 0 -> 587 bytes docs/classagrpc_1_1_basic_alarm-members.html | 132 + docs/classagrpc_1_1_basic_alarm.html | 365 +++ docs/classagrpc_1_1_basic_alarm.js | 11 + ...agrpc_1_1_basic_grpc_executor-members.html | 152 + docs/classagrpc_1_1_basic_grpc_executor.html | 1128 +++++++ docs/classagrpc_1_1_basic_grpc_executor.js | 31 + docs/classagrpc_1_1_client_r_p_c.html | 137 + ...streaming_00_01_executor_01_4-members.html | 147 + ...nc_bidi_streaming_00_01_executor_01_4.html | 758 +++++ ...sync_bidi_streaming_00_01_executor_01_4.js | 23 + ...aming_00_01_executor_01_4__coll__graph.map | 11 + ...aming_00_01_executor_01_4__coll__graph.md5 | 1 + ...aming_00_01_executor_01_4__coll__graph.png | Bin 0 -> 33225 bytes ...ng_00_01_executor_01_4__inherit__graph.map | 11 + ...ng_00_01_executor_01_4__inherit__graph.md5 | 1 + ...ng_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 33225 bytes ...streaming_00_01_executor_01_4-members.html | 145 + ..._client_streaming_00_01_executor_01_4.html | 703 +++++ ...nc_client_streaming_00_01_executor_01_4.js | 21 + ...aming_00_01_executor_01_4__coll__graph.map | 9 + ...aming_00_01_executor_01_4__coll__graph.md5 | 1 + ...aming_00_01_executor_01_4__coll__graph.png | Bin 0 -> 22811 bytes ...ng_00_01_executor_01_4__inherit__graph.map | 9 + ...ng_00_01_executor_01_4__inherit__graph.md5 | 1 + ...ng_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 22811 bytes ...streaming_00_01_executor_01_4-members.html | 144 + ..._server_streaming_00_01_executor_01_4.html | 650 ++++ ...nc_server_streaming_00_01_executor_01_4.js | 19 + ...aming_00_01_executor_01_4__coll__graph.map | 12 + ...aming_00_01_executor_01_4__coll__graph.md5 | 1 + ...aming_00_01_executor_01_4__coll__graph.png | Bin 0 -> 32376 bytes ...ng_00_01_executor_01_4__inherit__graph.map | 12 + ...ng_00_01_executor_01_4__inherit__graph.md5 | 1 + ...ng_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 32376 bytes ...ync_unary_00_01_executor_01_4-members.html | 145 + ...epare_async_unary_00_01_executor_01_4.html | 673 +++++ ...prepare_async_unary_00_01_executor_01_4.js | 20 + ...unary_00_01_executor_01_4__coll__graph.map | 12 + ...unary_00_01_executor_01_4__coll__graph.md5 | 1 + ...unary_00_01_executor_01_4__coll__graph.png | Bin 0 -> 29249 bytes ...ry_00_01_executor_01_4__inherit__graph.map | 12 + ...ry_00_01_executor_01_4__inherit__graph.md5 | 1 + ...ry_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 29249 bytes ...m_i_n_5be979306263a9411a518530be4de1fb.map | 11 + ...m_i_n_5be979306263a9411a518530be4de1fb.md5 | 1 + ...m_i_n_5be979306263a9411a518530be4de1fb.png | Bin 0 -> 34428 bytes ...m_i_n_782469177b3a302f624f875517844517.map | 11 + ...m_i_n_782469177b3a302f624f875517844517.md5 | 1 + ...m_i_n_782469177b3a302f624f875517844517.png | Bin 0 -> 34428 bytes ...a_m_i_n_g_00_01_executor_01_4-members.html | 145 + ...s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html | 626 ++++ ...__s_t_r_e_a_m_i_n_g_00_01_executor_01_4.js | 21 + ...u_n_a_r_y_00_01_executor_01_4-members.html | 143 + ...r_i_c___u_n_a_r_y_00_01_executor_01_4.html | 606 ++++ ...e_r_i_c___u_n_a_r_y_00_01_executor_01_4.js | 19 + ...a_r_y_00_01_executor_01_4__coll__graph.map | 9 + ...a_r_y_00_01_executor_01_4__coll__graph.md5 | 1 + ...a_r_y_00_01_executor_01_4__coll__graph.png | Bin 0 -> 27820 bytes ..._y_00_01_executor_01_4__inherit__graph.map | 9 + ..._y_00_01_executor_01_4__inherit__graph.md5 | 1 + ..._y_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 27820 bytes docs/classagrpc_1_1_grpc_context-members.html | 147 + docs/classagrpc_1_1_grpc_context.html | 879 ++++++ docs/classagrpc_1_1_grpc_context.js | 26 + ...grpc_1_1_health_check_service-members.html | 130 + docs/classagrpc_1_1_health_check_service.html | 363 +++ docs/classagrpc_1_1_health_check_service.js | 9 + docs/classagrpc_1_1_server_r_p_c.html | 136 + ..._traits_t_00_01_executor_01_4-members.html | 147 + ...ng_00_01_traits_t_00_01_executor_01_4.html | 799 +++++ ...ming_00_01_traits_t_00_01_executor_01_4.js | 27 + ...its_t_00_01_executor_01_4__coll__graph.map | 11 + ...its_t_00_01_executor_01_4__coll__graph.md5 | 1 + ...its_t_00_01_executor_01_4__coll__graph.png | Bin 0 -> 37539 bytes ..._t_00_01_executor_01_4__inherit__graph.map | 11 + ..._t_00_01_executor_01_4__inherit__graph.md5 | 1 + ..._t_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 37539 bytes ..._traits_t_00_01_executor_01_4-members.html | 144 + ...ng_00_01_traits_t_00_01_executor_01_4.html | 722 +++++ ...ming_00_01_traits_t_00_01_executor_01_4.js | 24 + ...its_t_00_01_executor_01_4__coll__graph.map | 9 + ...its_t_00_01_executor_01_4__coll__graph.md5 | 1 + ...its_t_00_01_executor_01_4__coll__graph.png | Bin 0 -> 32396 bytes ..._t_00_01_executor_01_4__inherit__graph.map | 9 + ..._t_00_01_executor_01_4__inherit__graph.md5 | 1 + ..._t_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 32396 bytes ..._traits_t_00_01_executor_01_4-members.html | 146 + ...ng_00_01_traits_t_00_01_executor_01_4.html | 740 +++++ ...ming_00_01_traits_t_00_01_executor_01_4.js | 26 + ...its_t_00_01_executor_01_4__coll__graph.map | 9 + ...its_t_00_01_executor_01_4__coll__graph.md5 | 1 + ...its_t_00_01_executor_01_4__coll__graph.png | Bin 0 -> 31117 bytes ..._t_00_01_executor_01_4__inherit__graph.map | 9 + ..._t_00_01_executor_01_4__inherit__graph.md5 | 1 + ..._t_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 31117 bytes ..._traits_t_00_01_executor_01_4-members.html | 143 + ...ry_00_01_traits_t_00_01_executor_01_4.html | 672 +++++ ...nary_00_01_traits_t_00_01_executor_01_4.js | 23 + ...its_t_00_01_executor_01_4__coll__graph.map | 9 + ...its_t_00_01_executor_01_4__coll__graph.md5 | 1 + ...its_t_00_01_executor_01_4__coll__graph.png | Bin 0 -> 31571 bytes ..._t_00_01_executor_01_4__inherit__graph.map | 9 + ..._t_00_01_executor_01_4__inherit__graph.md5 | 1 + ..._t_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 31571 bytes ..._traits_t_00_01_executor_01_4-members.html | 145 + ..._c_00_01_traits_t_00_01_executor_01_4.html | 738 +++++ ..._i_c_00_01_traits_t_00_01_executor_01_4.js | 25 + ...its_t_00_01_executor_01_4__coll__graph.map | 11 + ...its_t_00_01_executor_01_4__coll__graph.md5 | 1 + ...its_t_00_01_executor_01_4__coll__graph.png | Bin 0 -> 37668 bytes ..._t_00_39e5e05fecc96f2a46256611b354f74f.map | 11 + ..._t_00_39e5e05fecc96f2a46256611b354f74f.md5 | 1 + ..._t_00_39e5e05fecc96f2a46256611b354f74f.png | Bin 0 -> 37668 bytes ...assagrpc_1_1_server_r_p_c_ptr-members.html | 134 + docs/classagrpc_1_1_server_r_p_c_ptr.html | 280 ++ docs/classagrpc_1_1_server_r_p_c_ptr.js | 13 + docs/classagrpc_1_1_waiter-members.html | 130 + docs/classagrpc_1_1_waiter.html | 362 +++ docs/classagrpc_1_1_waiter.js | 10 + ...1detail_1_1_client_r_p_c_base-members.html | 135 + ...agrpc_1_1detail_1_1_client_r_p_c_base.html | 430 +++ ...ssagrpc_1_1detail_1_1_client_r_p_c_base.js | 14 + ...ail_1_1_client_r_p_c_base__coll__graph.map | 7 + ...ail_1_1_client_r_p_c_base__coll__graph.md5 | 1 + ...ail_1_1_client_r_p_c_base__coll__graph.png | Bin 0 -> 15620 bytes ..._1_1_client_r_p_c_base__inherit__graph.map | 7 + ..._1_1_client_r_p_c_base__inherit__graph.md5 | 1 + ..._1_1_client_r_p_c_base__inherit__graph.png | Bin 0 -> 15620 bytes ...00_01_0aa44df362a645189e4ec90ad9553249.map | 9 + ...00_01_0aa44df362a645189e4ec90ad9553249.md5 | 1 + ...00_01_0aa44df362a645189e4ec90ad9553249.png | Bin 0 -> 27203 bytes ...0_01_4db4c83fa101bbf483845e57c308c4ff.html | 142 + ...0_01_ee3885a4767d154ee2c386c451f018bf.html | 549 ++++ ..._00_01_ee3885a4767d154ee2c386c451f018bf.js | 17 + ...00_01_f59a61e51f0680ee0a37f32d03c3b6f8.map | 13 + ...00_01_f59a61e51f0680ee0a37f32d03c3b6f8.md5 | 1 + ...00_01_f59a61e51f0680ee0a37f32d03c3b6f8.png | Bin 0 -> 39450 bytes ...1_1_client_r_p_c_context_base-members.html | 127 + ...1detail_1_1_client_r_p_c_context_base.html | 193 ++ ...1_1detail_1_1_client_r_p_c_context_base.js | 6 + ...ent_r_p_c_context_base__inherit__graph.map | 5 + ...ent_r_p_c_context_base__inherit__graph.md5 | 1 + ...ent_r_p_c_context_base__inherit__graph.png | Bin 0 -> 10133 bytes ...streaming_00_01_executor_01_4-members.html | 144 + ..._server_streaming_00_01_executor_01_4.html | 590 ++++ ...nc_server_streaming_00_01_executor_01_4.js | 20 + ...aming_4db376ed54db82ad30522926beac1170.map | 12 + ...aming_4db376ed54db82ad30522926beac1170.md5 | 1 + ...aming_4db376ed54db82ad30522926beac1170.png | Bin 0 -> 32175 bytes ...aming_bf375514cde84171a746d864e0b471c2.map | 9 + ...aming_bf375514cde84171a746d864e0b471c2.md5 | 1 + ...aming_bf375514cde84171a746d864e0b471c2.png | Bin 0 -> 25954 bytes ...ync_unary_00_01_executor_01_4-members.html | 145 + ...epare_async_unary_00_01_executor_01_4.html | 605 ++++ ...prepare_async_unary_00_01_executor_01_4.js | 21 + ...unary_00_01_executor_01_4__coll__graph.map | 9 + ...unary_00_01_executor_01_4__coll__graph.md5 | 1 + ...unary_00_01_executor_01_4__coll__graph.png | Bin 0 -> 23586 bytes ...ry_00_01_executor_01_4__inherit__graph.map | 12 + ...ry_00_01_executor_01_4__inherit__graph.md5 | 1 + ...ry_00_01_executor_01_4__inherit__graph.png | Bin 0 -> 29167 bytes ...etail_1_1_r_p_c_executor_base-members.html | 127 + ...rpc_1_1detail_1_1_r_p_c_executor_base.html | 300 ++ ...agrpc_1_1detail_1_1_r_p_c_executor_base.js | 6 + ..._1_r_p_c_executor_base__inherit__graph.map | 67 + ..._1_r_p_c_executor_base__inherit__graph.md5 | 1 + ..._1_r_p_c_executor_base__inherit__graph.png | Bin 0 -> 290633 bytes ...1detail_1_1_server_r_p_c_base-members.html | 133 + ...agrpc_1_1detail_1_1_server_r_p_c_base.html | 401 +++ ...ssagrpc_1_1detail_1_1_server_r_p_c_base.js | 12 + ...ail_1_1_server_r_p_c_base__coll__graph.map | 7 + ...ail_1_1_server_r_p_c_base__coll__graph.md5 | 1 + ...ail_1_1_server_r_p_c_base__coll__graph.png | Bin 0 -> 20223 bytes ..._1_1_server_r_p_c_base__inherit__graph.map | 7 + ..._1_1_server_r_p_c_base__inherit__graph.md5 | 1 + ..._1_1_server_r_p_c_base__inherit__graph.png | Bin 0 -> 20223 bytes ..._00_01393f4ad9b473437a095a3fa231b922df.map | 9 + ..._00_01393f4ad9b473437a095a3fa231b922df.md5 | 1 + ..._00_01393f4ad9b473437a095a3fa231b922df.png | Bin 0 -> 32008 bytes ...00_017ce51ae41bf8b69b48f5ce7a57b8b2b0.html | 142 + ...00_01e31241fd3385b9725dea3c9b5469411b.html | 642 ++++ ...t_00_01e31241fd3385b9725dea3c9b5469411b.js | 21 + ..._00_01f541bf3c55d25bf45b9183984d7c70f0.map | 13 + ..._00_01f541bf3c55d25bf45b9183984d7c70f0.md5 | 1 + ..._00_01f541bf3c55d25bf45b9183984d7c70f0.png | Bin 0 -> 47312 bytes ...1_1_server_r_p_c_context_base-members.html | 127 + ...1detail_1_1_server_r_p_c_context_base.html | 181 ++ ...1_1detail_1_1_server_r_p_c_context_base.js | 6 + ..._r_p_c_notify_when_done_mixin-members.html | 132 + ...1_server_r_p_c_notify_when_done_mixin.html | 361 +++ ...1_1_server_r_p_c_notify_when_done_mixin.js | 11 + ..._c_notify_when_done_mixin__coll__graph.map | 5 + ..._c_notify_when_done_mixin__coll__graph.md5 | 1 + ..._c_notify_when_done_mixin__coll__graph.png | Bin 0 -> 13063 bytes ...notify_when_done_mixin__inherit__graph.map | 5 + ...notify_when_done_mixin__inherit__graph.md5 | 1 + ...notify_when_done_mixin__inherit__graph.png | Bin 0 -> 13063 bytes docs/classes.html | 154 + docs/clipboard.js | 61 + docs/closed.png | Bin 0 -> 129 bytes docs/cookie.js | 58 + docs/custom.css | 3 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 128 + .../dir_700bf0e24be506c81407d73b2ecc08df.html | 140 + ...r_700bf0e24be506c81407d73b2ecc08df_dep.map | 5 + ...r_700bf0e24be506c81407d73b2ecc08df_dep.md5 | 1 + ...r_700bf0e24be506c81407d73b2ecc08df_dep.png | Bin 0 -> 3184 bytes .../dir_7a256c75ee72433a37583484d6be1d92.html | 133 + ...r_7a256c75ee72433a37583484d6be1d92_dep.map | 4 + ...r_7a256c75ee72433a37583484d6be1d92_dep.md5 | 1 + ...r_7a256c75ee72433a37583484d6be1d92_dep.png | Bin 0 -> 1969 bytes .../dir_a5bdbfbbaa7895161d62825676df7980.html | 122 + .../dir_e68e8157741866f444e17edd764ebbae.html | 122 + docs/doc.svg | 12 + docs/docd.svg | 12 + docs/doxygen-awesome-darkmode-toggle.js | 157 + ...n-awesome-sidebar-only-darkmode-toggle.css | 40 + docs/doxygen-awesome-sidebar-only.css | 116 + docs/doxygen-awesome.css | 2681 +++++++++++++++++ docs/doxygen.css | 1841 +++++++++++ docs/doxygen.svg | 28 + docs/doxygen_crawl.html | 746 +++++ docs/dynsections.js | 198 ++ docs/folderclosed.svg | 11 + docs/folderclosedd.svg | 11 + docs/folderopen.svg | 17 + docs/folderopend.svg | 12 + docs/functions.html | 125 + docs/functions_b.html | 124 + docs/functions_c.html | 125 + docs/functions_d.html | 124 + docs/functions_dup.js | 21 + docs/functions_e.html | 124 + docs/functions_f.html | 124 + docs/functions_func.html | 246 ++ docs/functions_g.html | 128 + docs/functions_i.html | 126 + docs/functions_m.html | 124 + docs/functions_n.html | 123 + docs/functions_o.html | 131 + docs/functions_p.html | 127 + docs/functions_q.html | 123 + docs/functions_r.html | 135 + docs/functions_rela.html | 123 + docs/functions_s.html | 134 + docs/functions_t.html | 124 + docs/functions_type.html | 156 + docs/functions_vars.html | 123 + docs/functions_w.html | 130 + docs/functions_~.html | 124 + docs/graph_legend.html | 181 ++ docs/graph_legend.md5 | 1 + docs/graph_legend.png | Bin 0 -> 23370 bytes docs/hierarchy.html | 205 ++ docs/hierarchy.js | 104 + docs/index.html | 139 + docs/inherit_graph_0.map | 3 + docs/inherit_graph_0.md5 | 1 + docs/inherit_graph_0.png | Bin 0 -> 3450 bytes docs/inherit_graph_1.map | 3 + docs/inherit_graph_1.md5 | 1 + docs/inherit_graph_1.png | Bin 0 -> 4704 bytes docs/inherit_graph_10.map | 3 + docs/inherit_graph_10.md5 | 1 + docs/inherit_graph_10.png | Bin 0 -> 4750 bytes docs/inherit_graph_11.map | 3 + docs/inherit_graph_11.md5 | 1 + docs/inherit_graph_11.png | Bin 0 -> 10191 bytes docs/inherit_graph_12.map | 3 + docs/inherit_graph_12.md5 | 1 + docs/inherit_graph_12.png | Bin 0 -> 8588 bytes docs/inherit_graph_13.map | 3 + docs/inherit_graph_13.md5 | 1 + docs/inherit_graph_13.png | Bin 0 -> 4015 bytes docs/inherit_graph_14.map | 3 + docs/inherit_graph_14.md5 | 1 + docs/inherit_graph_14.png | Bin 0 -> 2177 bytes docs/inherit_graph_15.map | 3 + docs/inherit_graph_15.md5 | 1 + docs/inherit_graph_15.png | Bin 0 -> 7658 bytes docs/inherit_graph_16.map | 3 + docs/inherit_graph_16.md5 | 1 + docs/inherit_graph_16.png | Bin 0 -> 7879 bytes docs/inherit_graph_17.map | 3 + docs/inherit_graph_17.md5 | 1 + docs/inherit_graph_17.png | Bin 0 -> 7377 bytes docs/inherit_graph_18.map | 3 + docs/inherit_graph_18.md5 | 1 + docs/inherit_graph_18.png | Bin 0 -> 5017 bytes docs/inherit_graph_19.map | 3 + docs/inherit_graph_19.md5 | 1 + docs/inherit_graph_19.png | Bin 0 -> 6197 bytes docs/inherit_graph_2.map | 3 + docs/inherit_graph_2.md5 | 1 + docs/inherit_graph_2.png | Bin 0 -> 9021 bytes docs/inherit_graph_20.map | 3 + docs/inherit_graph_20.md5 | 1 + docs/inherit_graph_20.png | Bin 0 -> 6215 bytes docs/inherit_graph_21.map | 3 + docs/inherit_graph_21.md5 | 1 + docs/inherit_graph_21.png | Bin 0 -> 6312 bytes docs/inherit_graph_22.map | 3 + docs/inherit_graph_22.md5 | 1 + docs/inherit_graph_22.png | Bin 0 -> 2386 bytes docs/inherit_graph_23.map | 3 + docs/inherit_graph_23.md5 | 1 + docs/inherit_graph_23.png | Bin 0 -> 2763 bytes docs/inherit_graph_24.map | 3 + docs/inherit_graph_24.md5 | 1 + docs/inherit_graph_24.png | Bin 0 -> 8832 bytes docs/inherit_graph_25.map | 3 + docs/inherit_graph_25.md5 | 1 + docs/inherit_graph_25.png | Bin 0 -> 8505 bytes docs/inherit_graph_26.map | 3 + docs/inherit_graph_26.md5 | 1 + docs/inherit_graph_26.png | Bin 0 -> 8423 bytes docs/inherit_graph_27.map | 3 + docs/inherit_graph_27.md5 | 1 + docs/inherit_graph_27.png | Bin 0 -> 5087 bytes docs/inherit_graph_28.map | 3 + docs/inherit_graph_28.md5 | 1 + docs/inherit_graph_28.png | Bin 0 -> 8388 bytes docs/inherit_graph_29.map | 3 + docs/inherit_graph_29.md5 | 1 + docs/inherit_graph_29.png | Bin 0 -> 7527 bytes docs/inherit_graph_3.map | 3 + docs/inherit_graph_3.md5 | 1 + docs/inherit_graph_3.png | Bin 0 -> 8772 bytes docs/inherit_graph_30.map | 3 + docs/inherit_graph_30.md5 | 1 + docs/inherit_graph_30.png | Bin 0 -> 3838 bytes docs/inherit_graph_31.map | 3 + docs/inherit_graph_31.md5 | 1 + docs/inherit_graph_31.png | Bin 0 -> 3915 bytes docs/inherit_graph_32.map | 3 + docs/inherit_graph_32.md5 | 1 + docs/inherit_graph_32.png | Bin 0 -> 2254 bytes docs/inherit_graph_33.map | 3 + docs/inherit_graph_33.md5 | 1 + docs/inherit_graph_33.png | Bin 0 -> 3794 bytes docs/inherit_graph_34.map | 3 + docs/inherit_graph_34.md5 | 1 + docs/inherit_graph_34.png | Bin 0 -> 6229 bytes docs/inherit_graph_4.map | 3 + docs/inherit_graph_4.md5 | 1 + docs/inherit_graph_4.png | Bin 0 -> 4280 bytes docs/inherit_graph_5.map | 3 + docs/inherit_graph_5.md5 | 1 + docs/inherit_graph_5.png | Bin 0 -> 7699 bytes docs/inherit_graph_6.map | 3 + docs/inherit_graph_6.md5 | 1 + docs/inherit_graph_6.png | Bin 0 -> 7597 bytes docs/inherit_graph_7.map | 3 + docs/inherit_graph_7.md5 | 1 + docs/inherit_graph_7.png | Bin 0 -> 2586 bytes docs/inherit_graph_8.map | 3 + docs/inherit_graph_8.md5 | 1 + docs/inherit_graph_8.png | Bin 0 -> 3275 bytes docs/inherit_graph_9.map | 75 + docs/inherit_graph_9.md5 | 1 + docs/inherit_graph_9.png | Bin 0 -> 311618 bytes docs/inherits.html | 372 +++ docs/jquery.js | 204 ++ docs/md_doc_2client__rpc__cheat__sheet.html | 280 ++ docs/md_doc_2cmake__protobuf__generate.html | 172 ++ docs/md_doc_2completion__token.html | 156 + docs/md_doc_2server__rpc__cheat__sheet.html | 247 ++ docs/md_doc_2using__asio__io__context.html | 211 ++ docs/md_doc_2v3__migration.html | 663 ++++ docs/menu.js | 134 + docs/menudata.js | 86 + docs/minus.svg | 8 + docs/minusd.svg | 8 + docs/namespaceagrpc.html | 1258 ++++++++ docs/namespaceagrpc.js | 65 + docs/namespacemembers.html | 138 + docs/namespacemembers_enum.html | 122 + docs/namespacemembers_func.html | 128 + docs/namespacemembers_type.html | 125 + docs/namespacemembers_vars.html | 123 + docs/namespaces.html | 126 + docs/namespaces_dup.js | 4 + docs/nav_f.png | Bin 0 -> 157 bytes docs/nav_fd.png | Bin 0 -> 159 bytes docs/nav_g.png | Bin 0 -> 95 bytes docs/nav_h.png | Bin 0 -> 99 bytes docs/nav_hd.png | Bin 0 -> 105 bytes docs/navtree.css | 149 + docs/navtree.js | 483 +++ docs/navtreedata.js | 105 + docs/navtreeindex0.js | 253 ++ docs/navtreeindex1.js | 253 ++ docs/navtreeindex2.js | 253 ++ docs/navtreeindex3.js | 152 + docs/open.png | Bin 0 -> 119 bytes docs/pages.html | 131 + docs/plus.svg | 9 + docs/plusd.svg | 9 + docs/resize.js | 147 + docs/search/all_0.js | 12 + docs/search/all_1.js | 9 + docs/search/all_10.js | 6 + docs/search/all_11.js | 10 + docs/search/all_12.js | 4 + docs/search/all_13.js | 12 + docs/search/all_14.js | 5 + docs/search/all_2.js | 41 + docs/search/all_3.js | 8 + docs/search/all_4.js | 7 + docs/search/all_5.js | 6 + docs/search/all_6.js | 20 + docs/search/all_7.js | 4 + docs/search/all_8.js | 10 + docs/search/all_9.js | 6 + docs/search/all_a.js | 7 + docs/search/all_b.js | 13 + docs/search/all_c.js | 10 + docs/search/all_d.js | 4 + docs/search/all_e.js | 27 + docs/search/all_f.js | 49 + docs/search/classes_0.js | 5 + docs/search/classes_1.js | 24 + docs/search/classes_2.js | 5 + docs/search/classes_3.js | 4 + docs/search/classes_4.js | 4 + docs/search/classes_5.js | 4 + docs/search/classes_6.js | 6 + docs/search/classes_7.js | 30 + docs/search/classes_8.js | 4 + docs/search/classes_9.js | 4 + docs/search/close.svg | 18 + docs/search/enums_0.js | 4 + docs/search/enums_1.js | 4 + docs/search/enumvalues_0.js | 4 + docs/search/enumvalues_1.js | 4 + docs/search/enumvalues_2.js | 6 + docs/search/enumvalues_3.js | 4 + docs/search/enumvalues_4.js | 4 + docs/search/functions_0.js | 4 + docs/search/functions_1.js | 5 + docs/search/functions_2.js | 6 + docs/search/functions_3.js | 5 + docs/search/functions_4.js | 4 + docs/search/functions_5.js | 5 + docs/search/functions_6.js | 9 + docs/search/functions_7.js | 7 + docs/search/functions_8.js | 4 + docs/search/functions_9.js | 9 + docs/search/functions_a.js | 8 + docs/search/functions_b.js | 4 + docs/search/functions_c.js | 19 + docs/search/functions_d.js | 13 + docs/search/functions_e.js | 11 + docs/search/functions_f.js | 5 + docs/search/mag.svg | 24 + docs/search/mag_d.svg | 24 + docs/search/mag_sel.svg | 31 + docs/search/mag_seld.svg | 31 + docs/search/namespaces_0.js | 4 + docs/search/pages_0.js | 5 + docs/search/pages_1.js | 7 + docs/search/pages_2.js | 6 + docs/search/pages_3.js | 4 + docs/search/pages_4.js | 4 + docs/search/pages_5.js | 4 + docs/search/pages_6.js | 4 + docs/search/pages_7.js | 5 + docs/search/pages_8.js | 4 + docs/search/pages_9.js | 4 + docs/search/pages_a.js | 4 + docs/search/related_0.js | 5 + docs/search/related_1.js | 4 + docs/search/search.css | 291 ++ docs/search/search.js | 694 +++++ docs/search/searchdata.js | 42 + docs/search/typedefs_0.js | 6 + docs/search/typedefs_1.js | 4 + docs/search/typedefs_2.js | 7 + docs/search/typedefs_3.js | 4 + docs/search/typedefs_4.js | 4 + docs/search/typedefs_5.js | 5 + docs/search/typedefs_6.js | 5 + docs/search/typedefs_7.js | 4 + docs/search/variables_0.js | 4 + docs/search/variables_1.js | 5 + docs/search/variables_2.js | 4 + docs/search/variables_3.js | 4 + docs/search/variables_4.js | 4 + docs/splitbar.png | Bin 0 -> 288 bytes docs/splitbard.png | Bin 0 -> 178 bytes ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...m_i_n003cb43b2a2fe522958e614cece7f6cf.html | 142 + ...a_m_i_n003cb43b2a2fe522958e614cece7f6cf.js | 4 + ...m_i_ne81143c17c5a63044adf078c6b30030f.html | 125 + ...00_0187d2cbfa5f93dde68dea00f284ab536b.html | 125 + ...00_01900d803413fc821ee6c15a9d5231e14e.html | 142 + ...y_00_01900d803413fc821ee6c15a9d5231e14e.js | 4 + ...tagrpc_1_1_default_run_traits-members.html | 128 + docs/structagrpc_1_1_default_run_traits.html | 248 ++ docs/structagrpc_1_1_default_run_traits.js | 7 + ...1_default_server_r_p_c_traits-members.html | 125 + ...agrpc_1_1_default_server_r_p_c_traits.html | 152 + ...ctagrpc_1_1_default_server_r_p_c_traits.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ..._t_00167560586ee74b84ed2923c87227f3b4.html | 142 + ...ts_t_00167560586ee74b84ed2923c87227f3b4.js | 4 + ..._t_004581c31f0e089f98646a893ffa908c22.html | 125 + docs/structagrpc_1_1_use_sender-members.html | 125 + docs/structagrpc_1_1_use_sender.html | 175 ++ docs/structagrpc_1_1_use_sender.js | 4 + ..._1_waiter_1_1rebind__executor-members.html | 125 + ...tagrpc_1_1_waiter_1_1rebind__executor.html | 142 + ...uctagrpc_1_1_waiter_1_1rebind__executor.js | 4 + ...aming7f8c0c456bfb747ef86e02373e7d4f67.html | 125 + ...aming9434cc9f51666d3668ba5e9ae3497120.html | 142 + ...reaming9434cc9f51666d3668ba5e9ae3497120.js | 4 + ...utor_01_4_1_1rebind__executor-members.html | 125 + ..._01_executor_01_4_1_1rebind__executor.html | 142 + ...00_01_executor_01_4_1_1rebind__executor.js | 4 + ...1_1_notify_on_state_change_fn-members.html | 125 + ...1detail_1_1_notify_on_state_change_fn.html | 207 ++ ...1_1detail_1_1_notify_on_state_change_fn.js | 4 + ...ctagrpc_1_1detail_1_1_read_fn-members.html | 126 + docs/structagrpc_1_1detail_1_1_read_fn.html | 225 ++ docs/structagrpc_1_1detail_1_1_read_fn.js | 5 + docs/sync_off.png | Bin 0 -> 812 bytes docs/sync_on.png | Bin 0 -> 804 bytes docs/tab_a.png | Bin 0 -> 167 bytes docs/tab_ad.png | Bin 0 -> 157 bytes docs/tab_b.png | Bin 0 -> 182 bytes docs/tab_bd.png | Bin 0 -> 169 bytes docs/tab_h.png | Bin 0 -> 183 bytes docs/tab_hd.png | Bin 0 -> 185 bytes docs/tab_s.png | Bin 0 -> 197 bytes docs/tab_sd.png | Bin 0 -> 179 bytes docs/tabs.css | 1 + 557 files changed, 44392 insertions(+) create mode 100644 docs/.nojekyll create mode 100644 docs/annotated.html create mode 100644 docs/annotated_dup.js create mode 100644 docs/bc_s.png create mode 100644 docs/bc_sd.png create mode 100644 docs/classagrpc_1_1_basic_alarm-members.html create mode 100644 docs/classagrpc_1_1_basic_alarm.html create mode 100644 docs/classagrpc_1_1_basic_alarm.js create mode 100644 docs/classagrpc_1_1_basic_grpc_executor-members.html create mode 100644 docs/classagrpc_1_1_basic_grpc_executor.html create mode 100644 docs/classagrpc_1_1_basic_grpc_executor.js create mode 100644 docs/classagrpc_1_1_client_r_p_c.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_grpc_context-members.html create mode 100644 docs/classagrpc_1_1_grpc_context.html create mode 100644 docs/classagrpc_1_1_grpc_context.js create mode 100644 docs/classagrpc_1_1_health_check_service-members.html create mode 100644 docs/classagrpc_1_1_health_check_service.html create mode 100644 docs/classagrpc_1_1_health_check_service.js create mode 100644 docs/classagrpc_1_1_server_r_p_c.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_39e5e05fecc96f2a46256611b354f74f.map create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_39e5e05fecc96f2a46256611b354f74f.md5 create mode 100644 docs/classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_39e5e05fecc96f2a46256611b354f74f.png create mode 100644 docs/classagrpc_1_1_server_r_p_c_ptr-members.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_ptr.html create mode 100644 docs/classagrpc_1_1_server_r_p_c_ptr.js create mode 100644 docs/classagrpc_1_1_waiter-members.html create mode 100644 docs/classagrpc_1_1_waiter.html create mode 100644 docs/classagrpc_1_1_waiter.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__coll__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__coll__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__coll__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_base__inherit__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_0aa44df362a645189e4ec90ad9553249.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_0aa44df362a645189e4ec90ad9553249.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_0aa44df362a645189e4ec90ad9553249.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_4db4c83fa101bbf483845e57c308c4ff.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_ee3885a4767d154ee2c386c451f018bf.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_ee3885a4767d154ee2c386c451f018bf.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_f59a61e51f0680ee0a37f32d03c3b6f8.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_f59a61e51f0680ee0a37f32d03c3b6f8.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_f59a61e51f0680ee0a37f32d03c3b6f8.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_context_base__inherit__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_4db376ed54db82ad30522926beac1170.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_4db376ed54db82ad30522926beac1170.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_4db376ed54db82ad30522926beac1170.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_bf375514cde84171a746d864e0b471c2.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_bf375514cde84171a746d864e0b471c2.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_bf375514cde84171a746d864e0b471c2.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4.html create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4.js create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base.html create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base.js create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_r_p_c_executor_base__inherit__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base.js create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__coll__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__coll__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__coll__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_base__inherit__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01393f4ad9b473437a095a3fa231b922df.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01393f4ad9b473437a095a3fa231b922df.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01393f4ad9b473437a095a3fa231b922df.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_017ce51ae41bf8b69b48f5ce7a57b8b2b0.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01e31241fd3385b9725dea3c9b5469411b.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01e31241fd3385b9725dea3c9b5469411b.js create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01f541bf3c55d25bf45b9183984d7c70f0.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01f541bf3c55d25bf45b9183984d7c70f0.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01f541bf3c55d25bf45b9183984d7c70f0.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_context_base-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_context_base.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_context_base.js create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin-members.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin.html create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin.js create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__coll__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__coll__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__coll__graph.png create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__inherit__graph.map create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__inherit__graph.md5 create mode 100644 docs/classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin__inherit__graph.png create mode 100644 docs/classes.html create mode 100644 docs/clipboard.js create mode 100644 docs/closed.png create mode 100644 docs/cookie.js create mode 100644 docs/custom.css create mode 100644 docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 docs/dir_700bf0e24be506c81407d73b2ecc08df.html create mode 100644 docs/dir_700bf0e24be506c81407d73b2ecc08df_dep.map create mode 100644 docs/dir_700bf0e24be506c81407d73b2ecc08df_dep.md5 create mode 100644 docs/dir_700bf0e24be506c81407d73b2ecc08df_dep.png create mode 100644 docs/dir_7a256c75ee72433a37583484d6be1d92.html create mode 100644 docs/dir_7a256c75ee72433a37583484d6be1d92_dep.map create mode 100644 docs/dir_7a256c75ee72433a37583484d6be1d92_dep.md5 create mode 100644 docs/dir_7a256c75ee72433a37583484d6be1d92_dep.png create mode 100644 docs/dir_a5bdbfbbaa7895161d62825676df7980.html create mode 100644 docs/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 docs/doc.svg create mode 100644 docs/docd.svg create mode 100644 docs/doxygen-awesome-darkmode-toggle.js create mode 100644 docs/doxygen-awesome-sidebar-only-darkmode-toggle.css create mode 100644 docs/doxygen-awesome-sidebar-only.css create mode 100644 docs/doxygen-awesome.css create mode 100644 docs/doxygen.css create mode 100644 docs/doxygen.svg create mode 100644 docs/doxygen_crawl.html create mode 100644 docs/dynsections.js create mode 100644 docs/folderclosed.svg create mode 100644 docs/folderclosedd.svg create mode 100644 docs/folderopen.svg create mode 100644 docs/folderopend.svg create mode 100644 docs/functions.html create mode 100644 docs/functions_b.html create mode 100644 docs/functions_c.html create mode 100644 docs/functions_d.html create mode 100644 docs/functions_dup.js create mode 100644 docs/functions_e.html create mode 100644 docs/functions_f.html create mode 100644 docs/functions_func.html create mode 100644 docs/functions_g.html create mode 100644 docs/functions_i.html create mode 100644 docs/functions_m.html create mode 100644 docs/functions_n.html create mode 100644 docs/functions_o.html create mode 100644 docs/functions_p.html create mode 100644 docs/functions_q.html create mode 100644 docs/functions_r.html create mode 100644 docs/functions_rela.html create mode 100644 docs/functions_s.html create mode 100644 docs/functions_t.html create mode 100644 docs/functions_type.html create mode 100644 docs/functions_vars.html create mode 100644 docs/functions_w.html create mode 100644 docs/functions_~.html create mode 100644 docs/graph_legend.html create mode 100644 docs/graph_legend.md5 create mode 100644 docs/graph_legend.png create mode 100644 docs/hierarchy.html create mode 100644 docs/hierarchy.js create mode 100644 docs/index.html create mode 100644 docs/inherit_graph_0.map create mode 100644 docs/inherit_graph_0.md5 create mode 100644 docs/inherit_graph_0.png create mode 100644 docs/inherit_graph_1.map create mode 100644 docs/inherit_graph_1.md5 create mode 100644 docs/inherit_graph_1.png create mode 100644 docs/inherit_graph_10.map create mode 100644 docs/inherit_graph_10.md5 create mode 100644 docs/inherit_graph_10.png create mode 100644 docs/inherit_graph_11.map create mode 100644 docs/inherit_graph_11.md5 create mode 100644 docs/inherit_graph_11.png create mode 100644 docs/inherit_graph_12.map create mode 100644 docs/inherit_graph_12.md5 create mode 100644 docs/inherit_graph_12.png create mode 100644 docs/inherit_graph_13.map create mode 100644 docs/inherit_graph_13.md5 create mode 100644 docs/inherit_graph_13.png create mode 100644 docs/inherit_graph_14.map create mode 100644 docs/inherit_graph_14.md5 create mode 100644 docs/inherit_graph_14.png create mode 100644 docs/inherit_graph_15.map create mode 100644 docs/inherit_graph_15.md5 create mode 100644 docs/inherit_graph_15.png create mode 100644 docs/inherit_graph_16.map create mode 100644 docs/inherit_graph_16.md5 create mode 100644 docs/inherit_graph_16.png create mode 100644 docs/inherit_graph_17.map create mode 100644 docs/inherit_graph_17.md5 create mode 100644 docs/inherit_graph_17.png create mode 100644 docs/inherit_graph_18.map create mode 100644 docs/inherit_graph_18.md5 create mode 100644 docs/inherit_graph_18.png create mode 100644 docs/inherit_graph_19.map create mode 100644 docs/inherit_graph_19.md5 create mode 100644 docs/inherit_graph_19.png create mode 100644 docs/inherit_graph_2.map create mode 100644 docs/inherit_graph_2.md5 create mode 100644 docs/inherit_graph_2.png create mode 100644 docs/inherit_graph_20.map create mode 100644 docs/inherit_graph_20.md5 create mode 100644 docs/inherit_graph_20.png create mode 100644 docs/inherit_graph_21.map create mode 100644 docs/inherit_graph_21.md5 create mode 100644 docs/inherit_graph_21.png create mode 100644 docs/inherit_graph_22.map create mode 100644 docs/inherit_graph_22.md5 create mode 100644 docs/inherit_graph_22.png create mode 100644 docs/inherit_graph_23.map create mode 100644 docs/inherit_graph_23.md5 create mode 100644 docs/inherit_graph_23.png create mode 100644 docs/inherit_graph_24.map create mode 100644 docs/inherit_graph_24.md5 create mode 100644 docs/inherit_graph_24.png create mode 100644 docs/inherit_graph_25.map create mode 100644 docs/inherit_graph_25.md5 create mode 100644 docs/inherit_graph_25.png create mode 100644 docs/inherit_graph_26.map create mode 100644 docs/inherit_graph_26.md5 create mode 100644 docs/inherit_graph_26.png create mode 100644 docs/inherit_graph_27.map create mode 100644 docs/inherit_graph_27.md5 create mode 100644 docs/inherit_graph_27.png create mode 100644 docs/inherit_graph_28.map create mode 100644 docs/inherit_graph_28.md5 create mode 100644 docs/inherit_graph_28.png create mode 100644 docs/inherit_graph_29.map create mode 100644 docs/inherit_graph_29.md5 create mode 100644 docs/inherit_graph_29.png create mode 100644 docs/inherit_graph_3.map create mode 100644 docs/inherit_graph_3.md5 create mode 100644 docs/inherit_graph_3.png create mode 100644 docs/inherit_graph_30.map create mode 100644 docs/inherit_graph_30.md5 create mode 100644 docs/inherit_graph_30.png create mode 100644 docs/inherit_graph_31.map create mode 100644 docs/inherit_graph_31.md5 create mode 100644 docs/inherit_graph_31.png create mode 100644 docs/inherit_graph_32.map create mode 100644 docs/inherit_graph_32.md5 create mode 100644 docs/inherit_graph_32.png create mode 100644 docs/inherit_graph_33.map create mode 100644 docs/inherit_graph_33.md5 create mode 100644 docs/inherit_graph_33.png create mode 100644 docs/inherit_graph_34.map create mode 100644 docs/inherit_graph_34.md5 create mode 100644 docs/inherit_graph_34.png create mode 100644 docs/inherit_graph_4.map create mode 100644 docs/inherit_graph_4.md5 create mode 100644 docs/inherit_graph_4.png create mode 100644 docs/inherit_graph_5.map create mode 100644 docs/inherit_graph_5.md5 create mode 100644 docs/inherit_graph_5.png create mode 100644 docs/inherit_graph_6.map create mode 100644 docs/inherit_graph_6.md5 create mode 100644 docs/inherit_graph_6.png create mode 100644 docs/inherit_graph_7.map create mode 100644 docs/inherit_graph_7.md5 create mode 100644 docs/inherit_graph_7.png create mode 100644 docs/inherit_graph_8.map create mode 100644 docs/inherit_graph_8.md5 create mode 100644 docs/inherit_graph_8.png create mode 100644 docs/inherit_graph_9.map create mode 100644 docs/inherit_graph_9.md5 create mode 100644 docs/inherit_graph_9.png create mode 100644 docs/inherits.html create mode 100644 docs/jquery.js create mode 100644 docs/md_doc_2client__rpc__cheat__sheet.html create mode 100644 docs/md_doc_2cmake__protobuf__generate.html create mode 100644 docs/md_doc_2completion__token.html create mode 100644 docs/md_doc_2server__rpc__cheat__sheet.html create mode 100644 docs/md_doc_2using__asio__io__context.html create mode 100644 docs/md_doc_2v3__migration.html create mode 100644 docs/menu.js create mode 100644 docs/menudata.js create mode 100644 docs/minus.svg create mode 100644 docs/minusd.svg create mode 100644 docs/namespaceagrpc.html create mode 100644 docs/namespaceagrpc.js create mode 100644 docs/namespacemembers.html create mode 100644 docs/namespacemembers_enum.html create mode 100644 docs/namespacemembers_func.html create mode 100644 docs/namespacemembers_type.html create mode 100644 docs/namespacemembers_vars.html create mode 100644 docs/namespaces.html create mode 100644 docs/namespaces_dup.js create mode 100644 docs/nav_f.png create mode 100644 docs/nav_fd.png create mode 100644 docs/nav_g.png create mode 100644 docs/nav_h.png create mode 100644 docs/nav_hd.png create mode 100644 docs/navtree.css create mode 100644 docs/navtree.js create mode 100644 docs/navtreedata.js create mode 100644 docs/navtreeindex0.js create mode 100644 docs/navtreeindex1.js create mode 100644 docs/navtreeindex2.js create mode 100644 docs/navtreeindex3.js create mode 100644 docs/open.png create mode 100644 docs/pages.html create mode 100644 docs/plus.svg create mode 100644 docs/plusd.svg create mode 100644 docs/resize.js create mode 100644 docs/search/all_0.js create mode 100644 docs/search/all_1.js create mode 100644 docs/search/all_10.js create mode 100644 docs/search/all_11.js create mode 100644 docs/search/all_12.js create mode 100644 docs/search/all_13.js create mode 100644 docs/search/all_14.js create mode 100644 docs/search/all_2.js create mode 100644 docs/search/all_3.js create mode 100644 docs/search/all_4.js create mode 100644 docs/search/all_5.js create mode 100644 docs/search/all_6.js create mode 100644 docs/search/all_7.js create mode 100644 docs/search/all_8.js create mode 100644 docs/search/all_9.js create mode 100644 docs/search/all_a.js create mode 100644 docs/search/all_b.js create mode 100644 docs/search/all_c.js create mode 100644 docs/search/all_d.js create mode 100644 docs/search/all_e.js create mode 100644 docs/search/all_f.js create mode 100644 docs/search/classes_0.js create mode 100644 docs/search/classes_1.js create mode 100644 docs/search/classes_2.js create mode 100644 docs/search/classes_3.js create mode 100644 docs/search/classes_4.js create mode 100644 docs/search/classes_5.js create mode 100644 docs/search/classes_6.js create mode 100644 docs/search/classes_7.js create mode 100644 docs/search/classes_8.js create mode 100644 docs/search/classes_9.js create mode 100644 docs/search/close.svg create mode 100644 docs/search/enums_0.js create mode 100644 docs/search/enums_1.js create mode 100644 docs/search/enumvalues_0.js create mode 100644 docs/search/enumvalues_1.js create mode 100644 docs/search/enumvalues_2.js create mode 100644 docs/search/enumvalues_3.js create mode 100644 docs/search/enumvalues_4.js create mode 100644 docs/search/functions_0.js create mode 100644 docs/search/functions_1.js create mode 100644 docs/search/functions_2.js create mode 100644 docs/search/functions_3.js create mode 100644 docs/search/functions_4.js create mode 100644 docs/search/functions_5.js create mode 100644 docs/search/functions_6.js create mode 100644 docs/search/functions_7.js create mode 100644 docs/search/functions_8.js create mode 100644 docs/search/functions_9.js create mode 100644 docs/search/functions_a.js create mode 100644 docs/search/functions_b.js create mode 100644 docs/search/functions_c.js create mode 100644 docs/search/functions_d.js create mode 100644 docs/search/functions_e.js create mode 100644 docs/search/functions_f.js create mode 100644 docs/search/mag.svg create mode 100644 docs/search/mag_d.svg create mode 100644 docs/search/mag_sel.svg create mode 100644 docs/search/mag_seld.svg create mode 100644 docs/search/namespaces_0.js create mode 100644 docs/search/pages_0.js create mode 100644 docs/search/pages_1.js create mode 100644 docs/search/pages_2.js create mode 100644 docs/search/pages_3.js create mode 100644 docs/search/pages_4.js create mode 100644 docs/search/pages_5.js create mode 100644 docs/search/pages_6.js create mode 100644 docs/search/pages_7.js create mode 100644 docs/search/pages_8.js create mode 100644 docs/search/pages_9.js create mode 100644 docs/search/pages_a.js create mode 100644 docs/search/related_0.js create mode 100644 docs/search/related_1.js create mode 100644 docs/search/search.css create mode 100644 docs/search/search.js create mode 100644 docs/search/searchdata.js create mode 100644 docs/search/typedefs_0.js create mode 100644 docs/search/typedefs_1.js create mode 100644 docs/search/typedefs_2.js create mode 100644 docs/search/typedefs_3.js create mode 100644 docs/search/typedefs_4.js create mode 100644 docs/search/typedefs_5.js create mode 100644 docs/search/typedefs_6.js create mode 100644 docs/search/typedefs_7.js create mode 100644 docs/search/variables_0.js create mode 100644 docs/search/variables_1.js create mode 100644 docs/search/variables_2.js create mode 100644 docs/search/variables_3.js create mode 100644 docs/search/variables_4.js create mode 100644 docs/splitbar.png create mode 100644 docs/splitbard.png create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n003cb43b2a2fe522958e614cece7f6cf.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n003cb43b2a2fe522958e614cece7f6cf.js create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_ne81143c17c5a63044adf078c6b30030f.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_0187d2cbfa5f93dde68dea00f284ab536b.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01900d803413fc821ee6c15a9d5231e14e.html create mode 100644 docs/structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01900d803413fc821ee6c15a9d5231e14e.js create mode 100644 docs/structagrpc_1_1_default_run_traits-members.html create mode 100644 docs/structagrpc_1_1_default_run_traits.html create mode 100644 docs/structagrpc_1_1_default_run_traits.js create mode 100644 docs/structagrpc_1_1_default_server_r_p_c_traits-members.html create mode 100644 docs/structagrpc_1_1_default_server_r_p_c_traits.html create mode 100644 docs/structagrpc_1_1_default_server_r_p_c_traits.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00167560586ee74b84ed2923c87227f3b4.html create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00167560586ee74b84ed2923c87227f3b4.js create mode 100644 docs/structagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_004581c31f0e089f98646a893ffa908c22.html create mode 100644 docs/structagrpc_1_1_use_sender-members.html create mode 100644 docs/structagrpc_1_1_use_sender.html create mode 100644 docs/structagrpc_1_1_use_sender.js create mode 100644 docs/structagrpc_1_1_waiter_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1_waiter_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1_waiter_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming7f8c0c456bfb747ef86e02373e7d4f67.html create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming9434cc9f51666d3668ba5e9ae3497120.html create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming9434cc9f51666d3668ba5e9ae3497120.js create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4_1_1rebind__executor-members.html create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4_1_1rebind__executor.html create mode 100644 docs/structagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4_1_1rebind__executor.js create mode 100644 docs/structagrpc_1_1detail_1_1_notify_on_state_change_fn-members.html create mode 100644 docs/structagrpc_1_1detail_1_1_notify_on_state_change_fn.html create mode 100644 docs/structagrpc_1_1detail_1_1_notify_on_state_change_fn.js create mode 100644 docs/structagrpc_1_1detail_1_1_read_fn-members.html create mode 100644 docs/structagrpc_1_1detail_1_1_read_fn.html create mode 100644 docs/structagrpc_1_1detail_1_1_read_fn.js create mode 100644 docs/sync_off.png create mode 100644 docs/sync_on.png create mode 100644 docs/tab_a.png create mode 100644 docs/tab_ad.png create mode 100644 docs/tab_b.png create mode 100644 docs/tab_bd.png create mode 100644 docs/tab_h.png create mode 100644 docs/tab_hd.png create mode 100644 docs/tab_s.png create mode 100644 docs/tab_sd.png create mode 100644 docs/tabs.css diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 00000000..dd91fa32 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,173 @@ + + + + + + + + +asio-grpc: Class List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NagrpcPublic namespace
 Ndetail
 CClientRPCBaseServerRPC base
 CClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >Bidirectional-streaming ClientRPC base
 CClientRPCContextBaseClientRPC grpc::ClientContext base
 CClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >Server-streaming ClientRPC base
 Crebind_executorRebind the ClientRPC to another executor
 CClientRPCUnaryBase< PrepareAsyncUnary, Executor >Unary ClientRPC base
 Crebind_executorRebind the ClientRPC to another executor
 CNotifyOnStateChangeFnFunction to set notification for a grpc::Channel state change
 CReadFnServer/ClientRPC.read in form of a function object
 CRPCExecutorBaseRPC's executor base
 CServerRPCBaseServerRPC base
 CServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >ServerRPC bidirectional-streaming base
 CServerRPCContextBaseServerRPC ServerContext base
 CServerRPCNotifyWhenDoneMixinServerRPC NotifyWhenDone base
 CBasicAlarmI/O object for grpc::Alarm
 CBasicGrpcExecutorGrpcContext's executor
 CClientRPCPrimary ClientRPC template
 CClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >I/O object for client-side, generic, streaming rpcs
 Crebind_executorRebind the ClientRPC to another executor
 CClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >I/O object for client-side, generic, unary rpcs
 Crebind_executorRebind the ClientRPC to another executor
 CClientRPC< PrepareAsyncBidiStreaming, Executor >I/O object for client-side, bidirectional-streaming rpcs
 Crebind_executorRebind the ClientRPC to another executor
 CClientRPC< PrepareAsyncClientStreaming, Executor >I/O object for client-side, client-streaming rpcs
 Crebind_executorRebind the ClientRPC to another executor
 CClientRPC< PrepareAsyncServerStreaming, Executor >I/O object for client-side, server-streaming rpcs
 CClientRPC< PrepareAsyncUnary, Executor >I/O object for client-side, unary rpcs
 CDefaultRunTraits(experimental) Default run traits
 CDefaultServerRPCTraitsDefault ServerRPC traits
 CGrpcContextExecution context based on grpc::CompletionQueue
 CHealthCheckServiceCompletionQueue-based implementation of grpc::HealthCheckServiceInterface
 CServerRPCPrimary ServerRPC template
 CServerRPC< agrpc::ServerRPCType::GENERIC, TraitsT, Executor >I/O object for server-side, generic rpcs
 Crebind_executorRebind the ServerRPC to another executor
 CServerRPC< RequestBidiStreaming, TraitsT, Executor >I/O object for server-side, bidirectional-streaming rpcs
 Crebind_executorRebind the ServerRPC to another executor
 CServerRPC< RequestClientStreaming, TraitsT, Executor >I/O object for server-side, client-streaming rpcs
 Crebind_executorRebind the ServerRPC to another executor
 CServerRPC< RequestServerStreaming, TraitsT, Executor >I/O object for server-side, server-streaming rpcs
 Crebind_executorRebind the ServerRPC to another executor
 CServerRPC< RequestUnary, TraitsT, Executor >I/O object for server-side, unary rpcs
 Crebind_executorRebind the ServerRPC to another executor
 CServerRPCPtrAllocated ServerRPC created by register_callback_rpc_handler
 CUseSenderSender completion token
 CWaiter(experimental) Utility class for uncancelable operations
 Crebind_executorRebind the Waiter to another executor
+
+
+
+ + + + diff --git a/docs/annotated_dup.js b/docs/annotated_dup.js new file mode 100644 index 00000000..a54f5c70 --- /dev/null +++ b/docs/annotated_dup.js @@ -0,0 +1,41 @@ +var annotated_dup = +[ + [ "agrpc", "namespaceagrpc.html", [ + [ "detail", null, [ + [ "ClientRPCBase", "classagrpc_1_1detail_1_1_client_r_p_c_base.html", "classagrpc_1_1detail_1_1_client_r_p_c_base" ], + [ "ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >", "classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_ee3885a4767d154ee2c386c451f018bf.html", "classagrpc_1_1detail_1_1_client_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_request_t_00_01_ee3885a4767d154ee2c386c451f018bf" ], + [ "ClientRPCContextBase", "classagrpc_1_1detail_1_1_client_r_p_c_context_base.html", "classagrpc_1_1detail_1_1_client_r_p_c_context_base" ], + [ "ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >", "classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_00_01_executor_01_4.html", "classagrpc_1_1detail_1_1_client_r_p_c_server_streaming_base_3_01_prepare_async_server_streaming_00_01_executor_01_4" ], + [ "ClientRPCUnaryBase< PrepareAsyncUnary, Executor >", "classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4.html", "classagrpc_1_1detail_1_1_client_r_p_c_unary_base_3_01_prepare_async_unary_00_01_executor_01_4" ], + [ "NotifyOnStateChangeFn", "structagrpc_1_1detail_1_1_notify_on_state_change_fn.html", "structagrpc_1_1detail_1_1_notify_on_state_change_fn" ], + [ "ReadFn", "structagrpc_1_1detail_1_1_read_fn.html", "structagrpc_1_1detail_1_1_read_fn" ], + [ "RPCExecutorBase", "classagrpc_1_1detail_1_1_r_p_c_executor_base.html", "classagrpc_1_1detail_1_1_r_p_c_executor_base" ], + [ "ServerRPCBase", "classagrpc_1_1detail_1_1_server_r_p_c_base.html", "classagrpc_1_1detail_1_1_server_r_p_c_base" ], + [ "ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >", "classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01e31241fd3385b9725dea3c9b5469411b.html", "classagrpc_1_1detail_1_1_server_r_p_c_bidi_streaming_base_3_01_responder_t_3_01_response_t_00_01e31241fd3385b9725dea3c9b5469411b" ], + [ "ServerRPCContextBase", "classagrpc_1_1detail_1_1_server_r_p_c_context_base.html", "classagrpc_1_1detail_1_1_server_r_p_c_context_base" ], + [ "ServerRPCNotifyWhenDoneMixin", "classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin.html", "classagrpc_1_1detail_1_1_server_r_p_c_notify_when_done_mixin" ] + ] ], + [ "BasicAlarm", "classagrpc_1_1_basic_alarm.html", "classagrpc_1_1_basic_alarm" ], + [ "BasicGrpcExecutor", "classagrpc_1_1_basic_grpc_executor.html", "classagrpc_1_1_basic_grpc_executor" ], + [ "ClientRPC", "classagrpc_1_1_client_r_p_c.html", null ], + [ "ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4" ], + [ "ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4" ], + [ "ClientRPC< PrepareAsyncBidiStreaming, Executor >", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4" ], + [ "ClientRPC< PrepareAsyncClientStreaming, Executor >", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4" ], + [ "ClientRPC< PrepareAsyncServerStreaming, Executor >", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4" ], + [ "ClientRPC< PrepareAsyncUnary, Executor >", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4" ], + [ "DefaultRunTraits", "structagrpc_1_1_default_run_traits.html", "structagrpc_1_1_default_run_traits" ], + [ "DefaultServerRPCTraits", "structagrpc_1_1_default_server_r_p_c_traits.html", "structagrpc_1_1_default_server_r_p_c_traits" ], + [ "GrpcContext", "classagrpc_1_1_grpc_context.html", "classagrpc_1_1_grpc_context" ], + [ "HealthCheckService", "classagrpc_1_1_health_check_service.html", "classagrpc_1_1_health_check_service" ], + [ "ServerRPC", "classagrpc_1_1_server_r_p_c.html", null ], + [ "ServerRPC< agrpc::ServerRPCType::GENERIC, TraitsT, Executor >", "classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4.html", "classagrpc_1_1_server_r_p_c_3_01agrpc_1_1_server_r_p_c_type_1_1_g_e_n_e_r_i_c_00_01_traits_t_00_01_executor_01_4" ], + [ "ServerRPC< RequestBidiStreaming, TraitsT, Executor >", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4" ], + [ "ServerRPC< RequestClientStreaming, TraitsT, Executor >", "classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4.html", "classagrpc_1_1_server_r_p_c_3_01_request_client_streaming_00_01_traits_t_00_01_executor_01_4" ], + [ "ServerRPC< RequestServerStreaming, TraitsT, Executor >", "classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4.html", "classagrpc_1_1_server_r_p_c_3_01_request_server_streaming_00_01_traits_t_00_01_executor_01_4" ], + [ "ServerRPC< RequestUnary, TraitsT, Executor >", "classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4.html", "classagrpc_1_1_server_r_p_c_3_01_request_unary_00_01_traits_t_00_01_executor_01_4" ], + [ "ServerRPCPtr", "classagrpc_1_1_server_r_p_c_ptr.html", "classagrpc_1_1_server_r_p_c_ptr" ], + [ "UseSender", "structagrpc_1_1_use_sender.html", "structagrpc_1_1_use_sender" ], + [ "Waiter", "classagrpc_1_1_waiter.html", "classagrpc_1_1_waiter" ] + ] ] +]; \ No newline at end of file diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3c4cb9343562c0086034a837f256071c21e149 GIT binary patch literal 645 zcmV;00($+4P)Iy-s9jWAQ7PiW2U2`h5W%eo zhH4j<(jq7bg4EhBl!6wMCbdbeF2q`B5Un+t>&(auxuO5U$9Fk1=l(eN+%xkBP|Y1} zvAL0;tNuv}-vMx@z-{)hDU3}aH~Mv;7XWAS^|D>614H{`Y*~Mg4Wy{V0q&cc5#Jn) zk>4ZZ{6Lxwmjj}F;Ia{yON@4hs<1Kr14*ue>jpETED-yAq@Ki80*en$(MKCluA4^~ z>e(8iLs1pugHx>22IOmI1w-p(k);mTk&%cDXRv4j)MEpN`t>U}1fA@`P=@ZA0In9x zfw<2p_UX{?ry;0GtNbJ+$VI;0pNUE_Sd%71&~dB`f{9bE(d_~`*37~TanO~oyor>oXM7NHbL<} zj;;+Z6!er$mU+D5wJi=2QOp2X~ED*(>MHQV6|DthcHyK)&IDN7(> f0r?TLnM(Zw*2K0*rkww_00000NkvXXu0mjf)tM+! literal 0 HcmV?d00001 diff --git a/docs/bc_sd.png b/docs/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..7c691d4e8574a01fa0122aefa13e383888bf7c3d GIT binary patch literal 587 zcmV-R0<`^!P)7eW!DqQ#ZEh+S=T&j9DZkirJc3xF90vzPlJClrXUVhVFxIf`K3fbyGJ* zMVCf2DZHrI^rER46a(p^uyQ@`=Jb8n-*9+7Jm-1d?|IL8&UyX-MJfl$85*Pf48VdS zKD|w76kPtK2)+SWiA^mqbZME~op}LbQx+7_%$UfYFqqk)(-o)u{I7M3XvXkM^n^V0 z58tNp;;B^-nKb-Wly-~w*)24EMnopT;R(Zc3RMDWo!)R(1Rq-h8}(ho?+Ew#Ue4hT zUMF$x2CFak{$P~Y93kNohfdaUcp|L5+HMMhBjz(bq^mC_i;5z++e{gP1G2&flyqH!m2m!k-2#mX}gziJbZ({<6Y%6tI{>*u*!a;T{;ZvHKga*w04E zKen9K0h1I1bxP$G?apd9$ z(pMfCvBDJqOlEhl5IEM&`kQMKy;eAV=Fg|4ya#gKzu0)2+N;`gfYY}iw^$Mi`#Dj! z@XDptNSv?9+`pffK5S8t=2>R&%%Ul0G)%p@RfjV#^*h)s-2+Uf+YP4W(W->UKcm~R zfZidE*R@D!tR&1eViO9@=BK-VRe-N6F + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::BasicAlarm< Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::BasicAlarm< Executor >, including all inherited members.

+ + + + + + + + + +
BasicAlarm(const Executor &executor)agrpc::BasicAlarm< Executor >inlineexplicit
BasicAlarm(agrpc::GrpcContext &grpc_context)agrpc::BasicAlarm< Executor >inlineexplicit
cancel()agrpc::BasicAlarm< Executor >inline
executor_type typedefagrpc::BasicAlarm< Executor >
get_executor() const noexceptagrpc::BasicAlarm< Executor >inline
get_scheduler() const noexceptagrpc::BasicAlarm< Executor >inline
wait(const Deadline &deadline, CompletionToken &&token=CompletionToken{}) &agrpc::BasicAlarm< Executor >inline
wait(const Deadline &deadline, CompletionToken &&token=CompletionToken{}) &&agrpc::BasicAlarm< Executor >inline
+
+ + + + diff --git a/docs/classagrpc_1_1_basic_alarm.html b/docs/classagrpc_1_1_basic_alarm.html new file mode 100644 index 00000000..7ec819d1 --- /dev/null +++ b/docs/classagrpc_1_1_basic_alarm.html @@ -0,0 +1,365 @@ + + + + + + + + +asio-grpc: agrpc::BasicAlarm< Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::BasicAlarm< Executor > Class Template Reference
+
+
+ +

I/O object for grpc::Alarm + More...

+ +

#include <agrpc/alarm.hpp>

+ + + + + +

+Public Types

+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BasicAlarm (const Executor &executor)
 Construct a BasicAlarm from an executor.
 
BasicAlarm (agrpc::GrpcContext &grpc_context)
 Construct a BasicAlarm from a GrpcContext.
 
template<class Deadline , class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto wait (const Deadline &deadline, CompletionToken &&token=CompletionToken{}) &
 Wait until a specified deadline has been reached (lvalue overload)
 
template<class Deadline , class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto wait (const Deadline &deadline, CompletionToken &&token=CompletionToken{}) &&
 Wait until a specified deadline has been reached (rvalue overload)
 
void cancel ()
 Cancel an outstanding wait.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+

Detailed Description

+
template<class Executor>
+class agrpc::BasicAlarm< Executor >

I/O object for grpc::Alarm

+

Wraps a grpc::Alarm as an I/O object.

+
Template Parameters
+ + +
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

All. Effectively calls grpc::Alarm::Cancel which will cause the operation to complete with false.

+
Since
2.2.0
+

Member Function Documentation

+ +

◆ wait() [1/2]

+ +
+
+
+template<class Executor >
+
+template<class Deadline , class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::BasicAlarm< Executor >::wait (const Deadline & deadline,
CompletionToken && token = CompletionToken{} ) &
+
+inline
+
+ +

Wait until a specified deadline has been reached (lvalue overload)

+

The operation finishes once the alarm expires (at deadline) or is cancelled. If the alarm expired, the result will be true, false otherwise (i.e. upon cancellation).

+
Attention
Only one wait may be outstanding at a time.
+

Example:

+
agrpc::Alarm alarm{grpc_context};
+
bool wait_ok = co_await alarm.wait(std::chrono::system_clock::now() + std::chrono::seconds(1), asio::use_awaitable);
+
Parameters
+ + + +
deadlineBy default gRPC supports two types of deadlines: gpr_timespec and std::chrono::system_clock::time_point. More types can be added by specializing grpc::TimePoint.
tokenA completion token like asio::yield_context or the one created by agrpc::use_sender. The completion signature is void(bool). true if it expired, false if it was canceled.
+
+
+ +
+
+ +

◆ wait() [2/2]

+ +
+
+
+template<class Executor >
+
+template<class Deadline , class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::BasicAlarm< Executor >::wait (const Deadline & deadline,
CompletionToken && token = CompletionToken{} ) &&
+
+inline
+
+ +

Wait until a specified deadline has been reached (rvalue overload)

+

Extends the lifetime of the Alarm until the end of the wait. Otherwise, equivalent to the lvalue overload.

+

Example:

+
auto [alarm, wait_ok] = co_await agrpc::Alarm(grpc_context)
+
.wait(std::chrono::system_clock::now() + std::chrono::seconds(1), asio::use_awaitable);
+
Parameters
+ + +
tokenA completion token like asio::yield_context or the one created by agrpc::use_sender. The completion signature is void(bool, BasicAlarm). true if it expired, false if it was canceled.
+
+
+ +
+
+ +

◆ cancel()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
void agrpc::BasicAlarm< Executor >::cancel ()
+
+inline
+
+ +

Cancel an outstanding wait.

+

The outstanding wait will complete with false if the Alarm did not fire yet, otherwise this function has no effect.

+

Thread-safe

+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::BasicAlarm< Executor >::get_executor () const
+
+inlinenodiscardnoexcept
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::BasicAlarm< Executor >::get_scheduler () const
+
+inlinenodiscardnoexcept
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_basic_alarm.js b/docs/classagrpc_1_1_basic_alarm.js new file mode 100644 index 00000000..eb066009 --- /dev/null +++ b/docs/classagrpc_1_1_basic_alarm.js @@ -0,0 +1,11 @@ +var classagrpc_1_1_basic_alarm = +[ + [ "executor_type", "classagrpc_1_1_basic_alarm.html#a27f0463bacb42bca624f6c3a5dbc010f", null ], + [ "BasicAlarm", "classagrpc_1_1_basic_alarm.html#a1c2856cde4299fab6033f44785b39a91", null ], + [ "BasicAlarm", "classagrpc_1_1_basic_alarm.html#a729216cc77694f2a829d6bade9e0c695", null ], + [ "wait", "classagrpc_1_1_basic_alarm.html#a1871721d802eb738999ba0628846ed82", null ], + [ "wait", "classagrpc_1_1_basic_alarm.html#a8d721ba08b4b170732dc8bea1580e61f", null ], + [ "cancel", "classagrpc_1_1_basic_alarm.html#a0b1a1d2755efc3e05862e597100af241", null ], + [ "get_executor", "classagrpc_1_1_basic_alarm.html#ac364d2b1f047e589fc67c428c2c12947", null ], + [ "get_scheduler", "classagrpc_1_1_basic_alarm.html#ac4ab630cb9294c470fc6d1d3acf2aa5c", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_basic_grpc_executor-members.html b/docs/classagrpc_1_1_basic_grpc_executor-members.html new file mode 100644 index 00000000..afc75063 --- /dev/null +++ b/docs/classagrpc_1_1_basic_grpc_executor-members.html @@ -0,0 +1,152 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::BasicGrpcExecutor< Allocator, Options > Member List
+
+
+ +

This is the complete list of members for agrpc::BasicGrpcExecutor< Allocator, Options >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedefagrpc::BasicGrpcExecutor< Allocator, Options >
BasicGrpcExecutor()=defaultagrpc::BasicGrpcExecutor< Allocator, Options >
context() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
defer(Function &&function, const OtherAllocator &other_allocator) constagrpc::BasicGrpcExecutor< Allocator, Options >inline
dispatch(Function &&function, const OtherAllocator &other_allocator) constagrpc::BasicGrpcExecutor< Allocator, Options >inline
execute(Function &&function) constagrpc::BasicGrpcExecutor< Allocator, Options >inline
get_allocator() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
on_work_finished() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
on_work_started() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
operator!=(const BasicGrpcExecutor &lhs, const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > &rhs) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >friend
operator==(const BasicGrpcExecutor &lhs, const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > &rhs) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >friend
post(Function &&function, const OtherAllocator &other_allocator) constagrpc::BasicGrpcExecutor< Allocator, Options >inline
prefer(asio::execution::relationship_t::fork_t) const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
prefer(asio::execution::relationship_t::continuation_t) const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
query(asio::execution::blocking_t) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inlinestatic
query(asio::execution::mapping_t) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inlinestatic
query(asio::execution::context_t) const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
query(asio::execution::relationship_t) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inlinestatic
query(asio::execution::outstanding_work_t) noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inlinestatic
query(asio::execution::allocator_t< OtherAllocator >) const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::blocking_t::possibly_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_blocking_never(Options, false)>agrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::blocking_t::never_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_blocking_never(Options, true)>agrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::outstanding_work_t::tracked_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_outstanding_work_tracked(Options, true)>agrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::outstanding_work_t::untracked_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_outstanding_work_tracked(Options, false)>agrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::allocator_t< OtherAllocator > other_allocator) const noexcept -> agrpc::BasicGrpcExecutor< OtherAllocator, Options >agrpc::BasicGrpcExecutor< Allocator, Options >inline
require(asio::execution::allocator_t< void >) const noexcept -> agrpc::BasicGrpcExecutor< std::allocator< void >, Options >agrpc::BasicGrpcExecutor< Allocator, Options >inline
running_in_this_thread() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
schedule() const noexceptagrpc::BasicGrpcExecutor< Allocator, Options >inline
+
+ + + + diff --git a/docs/classagrpc_1_1_basic_grpc_executor.html b/docs/classagrpc_1_1_basic_grpc_executor.html new file mode 100644 index 00000000..326232a7 --- /dev/null +++ b/docs/classagrpc_1_1_basic_grpc_executor.html @@ -0,0 +1,1128 @@ + + + + + + + + +asio-grpc: agrpc::BasicGrpcExecutor< Allocator, Options > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::BasicGrpcExecutor< Allocator, Options > Class Template Reference
+
+
+ +

GrpcContext's executor. + More...

+ +

#include <agrpc/grpc_executor.hpp>

+ + + + + +

+Public Types

+using allocator_type = Allocator
 The associated allocator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BasicGrpcExecutor ()=default
 Default construct an executor.
 
constexpr agrpc::GrpcContextcontext () const noexcept
 Get the underlying GrpcContext.
 
constexpr allocator_type get_allocator () const noexcept
 Get the associated allocator.
 
bool running_in_this_thread () const noexcept
 Determine whether the GrpcContext is running in the current thread.
 
void on_work_started () const noexcept
 Signal the GrpcContext that an asynchronous operation is in progress.
 
void on_work_finished () const noexcept
 Signal the GrpcContext that an asynchronous operation has completed.
 
template<class Function , class OtherAllocator >
void dispatch (Function &&function, const OtherAllocator &other_allocator) const
 Request the GrpcContext to invoke the given function object.
 
template<class Function , class OtherAllocator >
void post (Function &&function, const OtherAllocator &other_allocator) const
 Request the GrpcContext to invoke the given function object.
 
template<class Function , class OtherAllocator >
void defer (Function &&function, const OtherAllocator &other_allocator) const
 Request the GrpcContext to invoke the given function object.
 
template<class Function >
void execute (Function &&function) const
 Request the GrpcContext to invoke the given function object.
 
detail::ScheduleSender schedule () const noexcept
 Create a Sender that completes on the GrpcContext.
 
constexpr auto require (asio::execution::blocking_t::possibly_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_blocking_never(Options, false)>
 Obtain an executor with the blocking.possibly property.
 
constexpr auto require (asio::execution::blocking_t::never_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_blocking_never(Options, true)>
 Obtain an executor with the blocking.never property.
 
constexpr auto prefer (asio::execution::relationship_t::fork_t) const noexcept
 Obtain an executor with the relationship.fork property.
 
constexpr auto prefer (asio::execution::relationship_t::continuation_t) const noexcept
 Obtain an executor with the relationship.continuation property.
 
constexpr auto require (asio::execution::outstanding_work_t::tracked_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_outstanding_work_tracked(Options, true)>
 Obtain an executor with the outstanding_work.tracked property.
 
constexpr auto require (asio::execution::outstanding_work_t::untracked_t) const noexcept -> agrpc::BasicGrpcExecutor< Allocator, detail::set_outstanding_work_tracked(Options, false)>
 Obtain an executor with the outstanding_work.untracked property.
 
template<class OtherAllocator >
constexpr auto require (asio::execution::allocator_t< OtherAllocator > other_allocator) const noexcept -> agrpc::BasicGrpcExecutor< OtherAllocator, Options >
 Obtain an executor with the specified allocator property.
 
constexpr auto require (asio::execution::allocator_t< void >) const noexcept -> agrpc::BasicGrpcExecutor< std::allocator< void >, Options >
 Obtain an executor with the default allocator property.
 
constexpr agrpc::GrpcContextquery (asio::execution::context_t) const noexcept
 Query the current value of the context property.
 
template<class OtherAllocator >
constexpr allocator_type query (asio::execution::allocator_t< OtherAllocator >) const noexcept
 Query the current value of the allocator property.
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr auto query (asio::execution::blocking_t) noexcept
 Query the current value of the blocking property.
 
static constexpr detail::QueryStaticMapping::result_type query (asio::execution::mapping_t) noexcept
 Query the current value of the mapping property.
 
static constexpr detail::QueryStaticRelationship::result_type query (asio::execution::relationship_t) noexcept
 Query the current value of the relationship property.
 
static constexpr auto query (asio::execution::outstanding_work_t) noexcept
 Query the current value of the outstanding_work property.
 
+ + + + + + + + + +

+Friends

template<std::uint32_t OtherOptions>
constexpr bool operator== (const BasicGrpcExecutor &lhs, const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > &rhs) noexcept
 Compare two GrpcExecutor for equality.
 
template<std::uint32_t OtherOptions>
constexpr bool operator!= (const BasicGrpcExecutor &lhs, const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > &rhs) noexcept
 Compare two GrpcExecutor for inequality.
 
+

Detailed Description

+
template<class Allocator, std::uint32_t Options>
+class agrpc::BasicGrpcExecutor< Allocator, Options >

GrpcContext's executor.

+

A lightweight handle to a GrpcContext. Trivially copyable if it is not tracking outstanding work.

+

Satisfies the Executor and Networking TS and Scheduler requirements and can therefore be used in places where Asio/libunifex expects an Executor or Scheduler.

+

Constructor & Destructor Documentation

+ +

◆ BasicGrpcExecutor()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
agrpc::BasicGrpcExecutor< Allocator, Options >::BasicGrpcExecutor ()
+
+default
+
+ +

Default construct an executor.

+

The constructed object may not be used until it is assigned a valid executor, for example through GrpcContext::get_executor.

+ +
+
+

Member Function Documentation

+ +

◆ context()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext & agrpc::BasicGrpcExecutor< Allocator, Options >::context () const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Get the underlying GrpcContext.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ get_allocator()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
allocator_type agrpc::BasicGrpcExecutor< Allocator, Options >::get_allocator () const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Get the associated allocator.

+

Thread-safe

+ +
+
+ +

◆ running_in_this_thread()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
bool agrpc::BasicGrpcExecutor< Allocator, Options >::running_in_this_thread () const
+
+inlinenodiscardnoexcept
+
+ +

Determine whether the GrpcContext is running in the current thread.

+

Thread-safe

+ +
+
+ +

◆ on_work_started()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::on_work_started () const
+
+inlinenoexcept
+
+ +

Signal the GrpcContext that an asynchronous operation is in progress.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ on_work_finished()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::on_work_finished () const
+
+inlinenoexcept
+
+ +

Signal the GrpcContext that an asynchronous operation has completed.

+

Once all outstanding asynchronous operations have completed the GrpcContext will go into the stopped state.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ dispatch()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class Function , class OtherAllocator >
+ + + + + +
+ + + + + + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::dispatch (Function && function,
const OtherAllocator & other_allocator ) const
+
+inline
+
+ +

Request the GrpcContext to invoke the given function object.

+

Do not call this function directly, it is intended to be used by the asio::dispatch free function.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ post()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class Function , class OtherAllocator >
+ + + + + +
+ + + + + + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::post (Function && function,
const OtherAllocator & other_allocator ) const
+
+inline
+
+ +

Request the GrpcContext to invoke the given function object.

+

Do not call this function directly, it is intended to be used by the asio::post free function.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ defer()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class Function , class OtherAllocator >
+ + + + + +
+ + + + + + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::defer (Function && function,
const OtherAllocator & other_allocator ) const
+
+inline
+
+ +

Request the GrpcContext to invoke the given function object.

+

Do not call this function directly, it is intended to be used by the asio::defer free function.

+

Thread-safe

+

Since 1.6.0 this function is hidden when (BOOST_)ASIO_NO_TS_EXECUTORS is defined.

+ +
+
+ +

◆ execute()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class Function >
+ + + + + +
+ + + + + + + +
void agrpc::BasicGrpcExecutor< Allocator, Options >::execute (Function && function) const
+
+inline
+
+ +

Request the GrpcContext to invoke the given function object.

+

Thread-safe

+ +
+
+ +

◆ schedule()

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
detail::ScheduleSender agrpc::BasicGrpcExecutor< Allocator, Options >::schedule () const
+
+inlinenodiscardnoexcept
+
+ +

Create a Sender that completes on the GrpcContext.

+

Do not call this function directly. It is intended to be used by the unifex::schedule customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [1/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::blocking_t::possibly_t ) const -> agrpc::BasicGrpcExecutor<Allocator, detail::set_blocking_never(Options, false)> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the blocking.possibly property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [2/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::blocking_t::never_t ) const -> agrpc::BasicGrpcExecutor<Allocator, detail::set_blocking_never(Options, true)> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the blocking.never property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ prefer() [1/2]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::prefer (asio::execution::relationship_t::fork_t ) const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the relationship.fork property.

+

The GrpcExecutor always forks.

+

Do not call this function directly. It is intended to be used by the asio::prefer customisation point.

+

Thread-safe

+ +
+
+ +

◆ prefer() [2/2]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::prefer (asio::execution::relationship_t::continuation_t ) const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the relationship.continuation property.

+

The GrpcExecutor does not support continuation.

+

Do not call this function directly. It is intended to be used by the asio::prefer customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [3/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::outstanding_work_t::tracked_t ) const -> agrpc::BasicGrpcExecutor<Allocator, detail::set_outstanding_work_tracked(Options, true)> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the outstanding_work.tracked property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [4/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::outstanding_work_t::untracked_t ) const -> agrpc::BasicGrpcExecutor<Allocator, detail::set_outstanding_work_tracked(Options, false)> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the outstanding_work.untracked property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [5/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class OtherAllocator >
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::allocator_t< OtherAllocator > other_allocator) const -> agrpc::BasicGrpcExecutor<OtherAllocator, Options> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the specified allocator property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ require() [6/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
auto agrpc::BasicGrpcExecutor< Allocator, Options >::require (asio::execution::allocator_t< void > ) const -> agrpc::BasicGrpcExecutor<std::allocator<void>, Options> +
+
+inlinenodiscardconstexprnoexcept
+
+ +

Obtain an executor with the default allocator property.

+

Do not call this function directly. It is intended to be used by the asio::require customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [1/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
static constexpr auto agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::blocking_t )
+
+inlinestaticnodiscardconstexprnoexcept
+
+ +

Query the current value of the blocking property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [2/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
static constexpr detail::QueryStaticMapping::result_type agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::mapping_t )
+
+inlinestaticnodiscardconstexprnoexcept
+
+ +

Query the current value of the mapping property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [3/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext & agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::context_t ) const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Query the current value of the context property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [4/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
static constexpr detail::QueryStaticRelationship::result_type agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::relationship_t )
+
+inlinestaticnodiscardconstexprnoexcept
+
+ +

Query the current value of the relationship property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [5/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+ + + + + +
+ + + + + + + +
static constexpr auto agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::outstanding_work_t )
+
+inlinestaticnodiscardconstexprnoexcept
+
+ +

Query the current value of the outstanding_work property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+ +

◆ query() [6/6]

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<class OtherAllocator >
+ + + + + +
+ + + + + + + +
allocator_type agrpc::BasicGrpcExecutor< Allocator, Options >::query (asio::execution::allocator_t< OtherAllocator > ) const
+
+inlinenodiscardconstexprnoexcept
+
+ +

Query the current value of the allocator property.

+

Do not call this function directly. It is intended to be used by the asio::query customisation point.

+

Thread-safe

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator==

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<std::uint32_t OtherOptions>
+ + + + + +
+ + + + + + + + + + + +
bool operator== (const BasicGrpcExecutor< Allocator, Options > & lhs,
const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > & rhs )
+
+friend
+
+ +

Compare two GrpcExecutor for equality.

+

Returns true if the two executors can be interchanged with identical effects.

+

Thread-safe

+ +
+
+ +

◆ operator!=

+ +
+
+
+template<class Allocator , std::uint32_t Options>
+
+template<std::uint32_t OtherOptions>
+ + + + + +
+ + + + + + + + + + + +
bool operator!= (const BasicGrpcExecutor< Allocator, Options > & lhs,
const agrpc::BasicGrpcExecutor< Allocator, OtherOptions > & rhs )
+
+friend
+
+ +

Compare two GrpcExecutor for inequality.

+

Returns true if interchanging the two executors may not lead to identical effects.

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_basic_grpc_executor.js b/docs/classagrpc_1_1_basic_grpc_executor.js new file mode 100644 index 00000000..10d32059 --- /dev/null +++ b/docs/classagrpc_1_1_basic_grpc_executor.js @@ -0,0 +1,31 @@ +var classagrpc_1_1_basic_grpc_executor = +[ + [ "allocator_type", "classagrpc_1_1_basic_grpc_executor.html#a658f9dcfd92c049d9b8961bbb67eab13", null ], + [ "BasicGrpcExecutor", "classagrpc_1_1_basic_grpc_executor.html#af1f14c7ef02e44b330c245394dfebfa6", null ], + [ "context", "classagrpc_1_1_basic_grpc_executor.html#ae03cda766d1198fa9fa135fccc02232a", null ], + [ "get_allocator", "classagrpc_1_1_basic_grpc_executor.html#aead17d041c9509d3b5074375cd2eee6e", null ], + [ "running_in_this_thread", "classagrpc_1_1_basic_grpc_executor.html#aa88fb5798dd945616262dc58258f48ec", null ], + [ "on_work_started", "classagrpc_1_1_basic_grpc_executor.html#ab2333c1d9f61b6469aeb6c84898e9a36", null ], + [ "on_work_finished", "classagrpc_1_1_basic_grpc_executor.html#a727afeb6438fe94ec105085ee9e00d56", null ], + [ "dispatch", "classagrpc_1_1_basic_grpc_executor.html#a97eda5ecec4b7066166e2f08eb1518be", null ], + [ "post", "classagrpc_1_1_basic_grpc_executor.html#aa55121002e69f6da4d193e2438556519", null ], + [ "defer", "classagrpc_1_1_basic_grpc_executor.html#a2c158f7d2dcad831b4930cf131e63f21", null ], + [ "execute", "classagrpc_1_1_basic_grpc_executor.html#a582b3391e4c1c383800284659707501c", null ], + [ "schedule", "classagrpc_1_1_basic_grpc_executor.html#ade38414f479671b271f191f3ee458408", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#a9fc995acce9263dbce34dcdfc76bcb75", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#ad7c8d60173fb17ccb20df74eba49c23a", null ], + [ "prefer", "classagrpc_1_1_basic_grpc_executor.html#ada9763f836d7e1af44a67ce09c8d6522", null ], + [ "prefer", "classagrpc_1_1_basic_grpc_executor.html#af81aa8e1195243f012aeab6f83653015", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#ab78813d4863b8e8175875dc9508db97f", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#a28a91c9fa313c1e764f036c4484611b2", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#a92d82315cfce4d130c7b001a9a2f86e3", null ], + [ "require", "classagrpc_1_1_basic_grpc_executor.html#a127e4d664d638ed7c6faf8e011108072", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#a6f12911ba642e59b224357f68a2abb51", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#ab26ea9b4a7825f78147c43ea084b2ff3", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#a41de4c176cc36e18949f590323cfbae1", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#a93ee7e38b61436d95c48f32ea978967d", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#a562182f5842ccd6c52e5cf6b8c4a24d0", null ], + [ "query", "classagrpc_1_1_basic_grpc_executor.html#a3864da8461ae1579a14bb20af274d8c5", null ], + [ "operator==", "classagrpc_1_1_basic_grpc_executor.html#a47785162ab9282e1afe21ca8617142eb", null ], + [ "operator!=", "classagrpc_1_1_basic_grpc_executor.html#a59d940966a2cbccb0905db9c4fe23e09", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c.html b/docs/classagrpc_1_1_client_r_p_c.html new file mode 100644 index 00000000..0957ae23 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c.html @@ -0,0 +1,137 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< PrepareAsync, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< PrepareAsync, Executor > Class Template Reference
+
+
+ +

Primary ClientRPC template. + More...

+

Detailed Description

+
template<auto PrepareAsync, class Executor = agrpc::BasicGrpcExecutor<>>
+class agrpc::ClientRPC< PrepareAsync, Executor >

Primary ClientRPC template.

+

This is the main entrypoint for implementing asynchronous gRPC clients.

+
See also
agrpc::ClientRPC<PrepareAsyncUnary,Executor>
+ agrpc::ClientRPC<agrpc::ClientRPCType::GENERIC_UNARY,Executor>
+ agrpc::ClientRPC<PrepareAsyncClientStreaming,Executor>
+ agrpc::ClientRPC<PrepareAsyncServerStreaming,Executor>
+ agrpc::ClientRPC<PrepareAsyncBidiStreaming,Executor>
+ agrpc::ClientRPC<agrpc::ClientRPCType::GENERIC_STREAMING,Executor>
+
+
Since
2.6.0
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4-members.html new file mode 100644 index 00000000..b36d8d15 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4-members.html @@ -0,0 +1,147 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inline
context()agrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
context() constagrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
executor_type typedefagrpc::detail::RPCExecutorBase< Executor >
finish(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
method_name() noexceptagrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >inlinestatic
read(ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
read_initial_metadata(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
Request typedefagrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >
Response typedefagrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >
service_name() noexceptagrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >inlinestatic
start(StubT &stub, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >inline
Stub typedefagrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >
TYPEagrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >static
write(const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
write(const RequestT &request, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
writes_done(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html new file mode 100644 index 00000000..8897ccf2 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html @@ -0,0 +1,758 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, bidirectional-streaming rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >:
+
+
+ + + + + + +

+Classes

struct  rebind_executor
 Rebind the ClientRPC to another executor. More...
 
+ + + + + + + + + + + + + +

+Public Types

+using Stub = StubT
 The stub type.
 
+using Request = RequestT
 The request message type.
 
+using Response = ResponseT
 The response message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto start (StubT &stub, CompletionToken &&token=CompletionToken{})
 Start a bidirectional-streaming request.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read_initial_metadata (CompletionToken &&token=CompletionToken{})
 Read initial metadata.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read (ResponseT &response, CompletionToken &&token=CompletionToken{})
 Receive a message from the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})
 Send a message to the server.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, CompletionToken &&token=CompletionToken{})
 Send a message to the server (default WriteOptions)
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto writes_done (CompletionToken &&token=CompletionToken{})
 Signal writes done to the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (CompletionToken &&token=CompletionToken{})
 Signal writes done and finish the rpc.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + +

+Static Public Member Functions

static constexpr std::string_view service_name () noexcept
 Name of the gRPC service.
 
static constexpr std::string_view method_name () noexcept
 Name of the gRPC method.
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::BIDIRECTIONAL_STREAMING
 The rpc type.
 
+

Detailed Description

+
template<class StubT, class RequestT, class ResponseT, template< class, class > class ResponderT, detail::PrepareAsyncClientBidirectionalStreamingRequest< StubT, ResponderT< RequestT, ResponseT > > PrepareAsyncBidiStreaming, class Executor>
+class agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >

I/O object for client-side, bidirectional-streaming rpcs.

+

Example:

+
asio::awaitable<void> client_rpc_bidirectional_streaming(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::Stub& stub)
+
{
+
using RPC = asio::use_awaitable_t<>::as_default_on_t<agrpc::ClientRPC<
+
&example::v1::Example::Stub::PrepareAsyncBidirectionalStreaming>>;
+
+
RPC rpc{grpc_context};
+
rpc.context().set_deadline(std::chrono::system_clock::now() +
+
std::chrono::seconds(5));
+
+
if (!co_await rpc.start(stub))
+
{
+
const grpc::Status status = co_await rpc.finish();
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
+
RPC::Request request;
+
request.set_integer(42);
+
+
bool write_ok{true};
+
RPC::Response response;
+
while (co_await rpc.read(response) && write_ok)
+
{
+
request.set_integer(response.integer() + 1);
+
write_ok = co_await rpc.write(request);
+
}
+
+
const grpc::Status status = co_await rpc.finish();
+
if (!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + + +
PrepareAsyncBidiStreamingA pointer to the generated, async version of the gRPC method. The async version starts with PrepareAsync.
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. After successful cancellation no further operations may be started on the rpc (except finish()). Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ service_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class, class > class ResponderT, detail::PrepareAsyncClientBidirectionalStreamingRequest< StubT, ResponderT< RequestT, ResponseT > > PrepareAsyncBidiStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >::service_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC service.

+

Equal to the generated Service::service_full_name().

+

E.g. for the .proto schema

+
package example.v1;
+
+
service Example { ... }
+

the return value would be "example.v1.Example".

+
Since
2.6.0
+ +
+
+ +

◆ method_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class, class > class ResponderT, detail::PrepareAsyncClientBidirectionalStreamingRequest< StubT, ResponderT< RequestT, ResponseT > > PrepareAsyncBidiStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >::method_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC method.

+

E.g. for agrpc::ClientRPC<&example::Example::Stub::PrepareAsyncMyMethod> the return value would be "MyMethod".

+
Since
2.6.0
+ +
+
+ +

◆ start()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class, class > class ResponderT, detail::PrepareAsyncClientBidirectionalStreamingRequest< StubT, ResponderT< RequestT, ResponseT > > PrepareAsyncBidiStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncBidiStreaming, Executor >::start (StubT & stub,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Start a bidirectional-streaming request.

+
Parameters
+ + + +
stubThe Stub that corresponds to the gRPC method.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the rpc was started successfully. If it is false, then call finish() to obtain error details.
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::read_initial_metadata (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Attention
If the server does not explicitly send initial metadata (e.g. by calling send_initial_metadata()) but waits for a message from the client instead then this function won't complete until write() is called.
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ read()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::read (ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Receive a message from the server.

+

This is thread-safe with respect to write() or writes_done() methods. It should not be called concurrently with other operations. It is not meaningful to call it concurrently with another read on the same stream since reads on the same stream are delivered in order.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that a valid message was read. false when there will be no more incoming messages, either because the other server is finished sending messages or the stream has failed (or been cancelled).
+
+
+ +
+
+ +

◆ write()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::write (const RequestT & request,
grpc::WriteOptions options,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Send a message to the server.

+

Only one write may be outstanding at any given time. This is thread-safe with respect to read(). It should not be called concurrently with other operations.

+
Parameters
+ + + +
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ writes_done()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::writes_done (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Signal writes done to the server.

+

May only be called once. Should not be called after performing a write with the set_last_message option.

+

Signal the client is done with the writes (half-close the client stream). Thread-safe with respect to read. May not be called concurrently with a write() that has the set_last_message option set.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::finish (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Signal writes done and finish the rpc.

+

Indicate that the stream is to be finished and request notification for when the call has been ended.

+

May not be used concurrently with other operations and may only be called once.

+

It is appropriate to call this method when:

+
    +
  • All messages from the server have been received (either known implictly, or explicitly because a previous read operation returned false).
  • +
+

The operation will finish when either:

+
    +
  • The server has returned a status.
  • +
  • The call failed for some reason and the library generated a status.
  • +
+

Note that implementations of this method attempt to receive initial metadata from the server if initial metadata has not been received yet.

+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata received from the server.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.js new file mode 100644 index 00000000..374bbec7 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.js @@ -0,0 +1,23 @@ +var classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4 = +[ + [ "rebind_executor", "structagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4_1_1rebind__executor.html", "structagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4_1_1rebind__executor" ], + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a4ad1384caca1951c4d7b4b68b1387bb9", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#ab17fb315d9316707b442296f9096519c", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a09949deac664f28273aa1b4f806759b1", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#afe3aab926de22d76fdb5e0d347c5d8c4", null ], + [ "service_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a07458f85b4281c361b16f652b6cda493", null ], + [ "method_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a36e96b31ad3ef1098a4c8c23e9dd94b7", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#aa30e41480cbb07e971de447834423cdd", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#afb6a4be476b5cab862000ba87b70e289", null ], + [ "read", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#ad3830bd5b441d8b80c2a5dd33ae8ad2d", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a613e43b75d508d451dac44e474256bf8", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a7617653d30c2f57cdaeffcefed89793f", null ], + [ "writes_done", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a2d19b1441bd69861873989f76f5875e2", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a9a9b990891472214354e3425616f7b23", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4.html#a0b85df8344986b161b6223aa80595a6c", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..f36e4f0e --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..0ebff82d --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +5299787f29f4347ddb9b62a3bff77989 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..916dd343a0e4d430255b7c4237392fb255c2d0eb GIT binary patch literal 33225 zcmb5WcOaL2+dr-)DNzxnND*4H%N`*qvxJPYE3#!%l#t8_*)u|ljLhtWG9uY~W+(gi zIey$$zah~t(C(k!%wGi784BA|W|OB6~^vy4~x^E_=Ic)tjZWOR~pTuXt<^xTH(L z6fz_Az2jkOi1gWj%K@r)ed5-ed^NmNLo_t*?>m)!BilRfar^O)mn#B~ZD(?PU^%iR z<8rY_Q~h^N6<6j+?fhUAx6v>+H!FW_XV}GKvVqM1zyG`6ZH}3XV(;DuNv-$NguDt_ z#_ZqQ&Gs)Q9(Dis!xk*h+wTv%m(!8u9k*b=-(IfCN_y|y<$r&hLgj%&gIi`67g;V` z_$zC`A={Y!>>1fX4sFejJOBMIj(zb>d&U0!A^gF?+R|U<|9oL=$FZIE|Nd6|L7T+V ze}r>+b-Lt`fc2=#X%0cbh#%>%Y^X`QQ7DVzu;7rXCy~es9#sz{Sl? zQCwA1^9=VTs+_;MHcuJEs*oh*bC8*ZWp*f3XAXC7HTo^~c(Z1)Q<&EQR?E?EOseS` zJ4!>&-Wu&G5yf35=#;p$cXU{ex3G8Q+^^2i`ebfv`=fSXLm)WB^RCr@i^5@S$BrFO z&S~Z;3O##qRL~or<7GS5;pOj7Wii_?6*8(b zB%TEaQ-4praoS?0SA4cXaQYeXb8?~Qyok@(wsY^ZeJ7-!J?JX%I>c>A<|`dP92OaQ zcDNz(^va*9)1-Tkux)*GqD7o5+_r41cuGOvV%7EOA+6iY{QQA*jhy{H2hTSBB2`yckGqkkdR#A3C^>&&x=Z|6z7nR!rJTKf2j6Ox_9&bP2q z-fvWr5001Mn*(0HyrIvqV|{rfIu3Vp{NhD*;XlOfg>f5=o93>~OD(E9ITaeWroODH ztyOCN-JT`6ho0|k1z*X->8QWcuA8TcJ9xVH=&3)GKjXD^TAXbrexx6tuqi3`r1a@4 z_w;F6m;G<8YM*TUdNm4A6eC$KuJ`IXWJormmPB zsJ5R-&utkJzj*QD!ZG*;as=lG?Pc~`cjY4{BV8n*;^qsHJ4A_%y?UMb0$YRzVGEt?XtQ$ zpVCq>6hl>emR_r!2bJ~cw=Hfch^FRd`_1*GeEa#6W+m%<)5WXjZhbWAD_ZJ~*RAx< zD<~K@-6r{`mz{k$?uf7hH9bAOiHV8#wSoTr$Es;Vzq>w}^b|*CXY+`x&6G=wef|2? zyFNbVqv6TjKvS9*d-T}{pH#wcO3*%FJF6&06`A3sjw zZ8HD*^^tIXvlkyeaG#KQG1!@JH6ECOLZh+QQNMMI{<^~dDQ_krEbeN~gD#CTI>nk~ zOci)GmlChMyku+p(P3jMw@1~e0UsbkBJe?G&M#dvUs?Fzp+oG{Qu}u8+NFy%`dn5f zZX_*>Z`Y{8L#p`s!Kl@0hmPmdr{qRPMmEFVR1$j_MKpa!a(i43$ji$g7Z%nMF0q+V z?HeCIhJCrlzJAJ@k%)zK4002MRZfxq@HUp7?ih zgiVRU)B0qab+7eQ|G+@)moNP&s*1|WE#|*FFFH9nv8g0I4==VDsG98hbd%L@WpRS` zOD<}2dnSN|h!Rp&RUKdY^XJdk2!1~XVTbb; z{g-n57IGqrMI0548lw`miyYK6G*YX>dGA-@8QV0`*y#Lw_p(hNhQsIvf0nos{Zju+ zF#Ez-^UmG7cPGh5rtW>#{`05B(r>NE``(95&U3PBMm`=xW3K)BwW7N_3M1j*#nL-u zf`XqUhG?Bkjf^~fe0HlOU1hg64dXKSb}#42i;4U0)s??~Mevz+d`r4Uk7_5|wJTO7 zSzbV)eH=~t?5&Rpn)#M?_V#b&vQW+PmX=&HFOJ0CDSzrv$NnJR*jKt7S2R02duMUH z)oG?|=YrtwmlnmQ@u{qD&`uH`baHKvWd2j01 zNWoCdETvDjrUJH;HE5*EXos!Y#MW$x6eM|0&;J7LFm;5y_(5C7(S7^&tzjtL6GFed z(QG^3;^pD7o#!wGsyYdk^7rpwqM)u`z4|UYyP~Bf_*bqOeJANtHZ+Po3_^6+M~3y` ziB_FhF3gU;sj2i2ZSo%s>qk5DxwmZD@>=kryl_-dQ2FO4yYnpuo{C$@zdFAK>r>{w z^KMJZKFOzhwk+h{l64+NrwI!S6Zmu*o6z|U<_-Jr-@o5#nAjb zNtd*=k1h5*J}ZL&Gy#1;JPm!^Wue+^#F*+$t(6DETYc zLB>r9yK?TgRn^wY`X;CFWvYKTIX}{v{BXLP$M_q`!-o&goH_Ff^}H?T(|=d6=pBRM zz|iERiN#R=z!`}glFP#c#_Oy0_eCnPWvUsG0At_am}A+QLm2bDzp_h)E3UKqB# zrW;B5H#0Q%d3kyD*94pppkEoT`|@Q!t3uS7>mkM0on`9MEw1?SV@5q-ow5Z z9RIw%VA1cPc4}rhE0dm4}ZUwU#Sb_@L6A7qVIfA zxfn(z!OYD34DdA|B;+KP^W0uWk+)VG8+?tKa+fZ7G@O{2AIKwmYp0$1zmU#>N$5rL z{Vt9(XRhk&>yt5ggjT+AIIhTnu$U1Zk9`pNm9T&2N57g!C2?!7O_VnC| zhW)v@IjG8){=okI${lz9+qD9jg%3nURFf{Rt`1C3o0&T}Iy!pzA7KCYg8-s03h{IQ zKd3pOzZSpn--`=Ope>c-uiz-nTNwSGcv$87b?Sj?zhu|V4VI)j zzoOo@k!aVA;5erOmyKm3ZP#_1&!0cnG&G!>GXMAUn8(8YDDRycRH5F1&F8QdCiaEiNubKPPq${yskHfW%DK!yckXy-iOi`T+0` z`}?(twoEMY5hrKoyFcHvW%9uijVHMWsLdCrM14l zUA7go*4@{af&lsF&h2#rtU4Hec5rM=R!xm=H|;rnR2TstOh2Gx(buA#=5}GfV@Aw& z+|L}#o^_lqs-`z9EGvDq?TupWR-hx>Sb-eubZOtioc442nwpw)y!WX4`uZqaMgIF7 zn1wxJVq(5M*-h(h^ga7-vxlFbAC&}Iy6Wlv{{Bnx(!Q52U%nhLmIgWu8sTcW4jc^r z^O>_}r7)VMjEz%jzJ7IzY4@>Q9KWFyE3qTXY1z^OY~hZc-ieL1c?I|Wm6eIiCq6zt z?fF*8mt|%53EECl={PUG#09##x^muaVvc;DdL!*58UnKiRX-plt@}>O9~U=kS)ix(x*prp#5QjE2x(cZapN32^p-G`Q=e|kFe1Lxdy$!0^P5ABxG zwoFFQm#VU|N2rOWPY=!b9&}z-RsFH8I%=~uS%GoU378{AHU03-Ol^b7_AJs$7LQ)Q zt(Fv}fvoIIs>hhkLc+qWdf>Nt`S}(@UuYIzrKP2n*+*Tlcnq-DH#{tDY|OT~KJBWW zZ#ksrb@RU!tG)eX;!&}?r*CE)0rb}2SX+KAVB?K>#%10sR`77TVZ1es{np1b=-&zA z?xg6*%1KubVSAP1FCG<^d7_yQjE-IgXEV34F+d?N;4f-p{RzkHW^b-VCQ`pE~p1RQw;E-+neQV7x?$Q2ApX+awrC7COA9NSiHYLib z7dh}^sS?4QJf1!kQC=0QTgxTC#eE{2j{Wal?qx%DN|wZIJqPNtvNF9KjVYg>X!F9^ zcoro}9h^eXdwY8gHPUTO?p8C&HqBSp)QpzKN%<6?o4P=>;=%=Yps)_byYa@%^*;0!){ z?7DFAV&B9>9WcIHfi?S40qfq@n>wxRpFq2w9~BJ27TQlkQ;ALX3avnrQg^buC<3f| z21P?a0w8hqk0yrzr5pwhqYn{}c6Mea22kF^)6)tY6_Z8=--Wromx+l9NOJ~4gCziP zjwaCApWj__8XAXzw@EM%JQ_t-_ke1os-~xkY`t7=sF;l6^KDMnq8P%^;J2*v7rK|pWYx48Gb7xnVoFKJq zVAPh{+FH##^VsZiJ7bOXkKS=?&gkR+`MVPq78W4upR&vSna5b>Fg0FZu#kw9(gpg) zHoBGjpt8H0!3}Jg(_z7wfHY|IyY}oE#HDR5{qltzT}%2ooj9fxXc~cF_Z}4>Igjr} z@zHVWZbwf5hvhP9e|OxdhI(*nsvfcg1KS@bw6)>1%wk5;D4ZqSo_w_x5l?7a18xh^SgU3w*QQ-N^jQMz5rk}g}HgR!rJ3G6SA<82c{NKGh z|0R?|L0X#h(4j*F&%tFjw85mm%LC3gUV<7ygyTjot`_nN-aA$Rd1!BltS^G`tc3v z$L0a$i=|V?o!j{=9NPJ^c+DgJy0r6gy0kOKx%R4lxBko5x3+NVB#qHjN6vVZnu4UE z;Ysf}ssrS|nJ_E}tolrpw*+YU;m z8AWQLec3W)H`rbcZY}@lWwL$N`}2-1ZEk7!S9l42fU-{kq_S1r$fuW)9 zojYYh6kB)Z8l^^0Xu5Mk;EtU;`J3cf-!oXCS&&0x|GhqwMFSM%TY@uNQFs$`9LjL{{qbc|8R2N)oR-*|_Ihsl&CFP(Q^Uz=}qTAj-M zuOvz^QRkHfdtHO!(;40PMtuW=Ew|0g6o?kYsYmKd&wq}~H$MIZNV0yz>xzACGr zP~F^o0Gq$tc}WXfJ?e7U4w@U&(6`<@uiBE}D>DlV`fGn@|E{jmhE;WRgkxiKnRf7K zCF}f16#q9iid2Q{R7TsUjcMm|SU}k6c;?%49mVS#LvhLG3 zwkJ)54h)17gxj_173=n-T^S!9A5RUEL5G2GQrgplcFlMXDDc!`2=iDUv_Rh|VaNUZ z_kaEx#{EV!pNmkf>%)21fcX~Cg<5p!@rbNO8d!vdBNOF9xd6kV2U&+K4kzb7oMs3* zc`eRy={Eo<11l@5`$R~zjJ*6_Cp&Ge8`U1H3*kfmx|r@_z~OMvEE=RH4@V&z4v!)T(^9dlf$Cd&UoCmol&>v z-IVV7J5ybUURzF~+Y!d}GodrD-pdKi#bo8=@OsDHzIX3RSAoq>h}jLxpnADVp=PMzkk1oW4rq5yto-X-FqE*S{ICoQq9j!%q@ zkAE4g4Z;Rty?AjscH9u{Vy3U0lZ&e#MKC@axN;0;3iLfIS1GGiJ zs-={uAwEDC838bB3p*6*?;o@G@()NP=s6RUzRD#o&QR?yLF&eHzJqqzlBp97#guSI zu(Y#_iw4jE??o;B?jrbN-ltCky}e@Q=I8I;y-RX6T13m}=g@j)rq(BE=q{~xK(#3< z(Jd|4rTrMLVUlOTcL8P7EC}Xb&c?MJxoGJTE9n`>Mt&`Vk2i&4VJcKb`KtsOG2+F< zNPrjP@L0eX`!UF&J*ZETG_D(jT+du{`TKXk&mQ}XSWOT#VC47;2U`8RcWYCW;uWc% z5R&Pkp!D>!pgT0|?CeJ_nD=76VCO)iybF;;NlB^l$4wp4I^pMFvQcIVCMOjj-(fH+ zoN|$E&q zxcK81z-B~`>*i5fTG}6(I*n+yqmYWa?N%2jJcEJ`aB^}cBqV$*adnNHcPFJd&dnVJ zTS_HE^P(@qSjC>PCz3Z<)MJ^uDh zv9PF!z}{v>iwD~>bvQnD?-*(vRHBv|DH^tDJIl)I3H=GW(^YKDtg(f~4=B3@Cr4d( zAvA8g7*}hSF@vQ|cVR&}!55E{t}11Vecp7P;s_QaW9e0R?YrZF#-j)l{u=u2%11iC z1lZ2Te&OZjj+gOcAk;`qgITQRfrAI7!IkK^4fl``bGPEzzBMe4K%0ED$Wie5NWJEy zYbv74TJLUep*gL}EFb_u%N#x7m8h!-){_KXM5gEgRAqr>YNw+I4?cxIgVNj?16%I- zk&A)Yr(5jZk6_$ijo_njLk-P=#e9#I-08m2$C3Jv69D>B@$;v;(Q>mpSGIO@vck=! zFK~LJ1eihwZi~m!%4g>ZxWD`QSg#SQ!J@@fYFuTfAbV#MdD}BN& zKI7Z0tgOD)*P|nqfp5V9)Vj8r;(V?s4|x6Vx0o%{h4Xs}QM;bM2aWP6Hiy;x@Us1*!>~7eW$6>EGD_^SPh;O(Wg zT|);q`lDIahF=QbBoww4(NQfebypU~u-*sV{{FRtXtH*zj_ZH30GA{rww^n8j^yhr z&TTt)?!@Gm!gONH``>i!wd4dZ2unE6-L0hn*kMBUT%fLJvnHWHyb)bZ zN=ov0@}zHQ=!Sj=#`7%13q4cQYq$@1gKx`hPOI&8EBVJCKEst>>_Qj?QLYO5{zkL? zm6V&DS&+jirS{eJp0d~3JSap%O-+5J{3)qf3#&(Ovx2Ar2xdifbx>p^g&5lVqe24; zh+qP3ouaR{QRkmYzFh#p?zVw}l#`PXEr)hRbMuGxM;?Lr5!zEFy$*}8!EEx|*P#V_ z3uR;)@wfPRNC~SSY|GK_@z&GbM==25BQE?Qbhvz*iGu`MLT9+CZU2N) zr|KNm&@Yzk94ae}T ztXava$bF2AelK6XY-s$wK7ChlA%@t*K1T=PUj1_uj|xAYxfk<;>gkV(jU^tj=~ayl z?Te^nVhdf36nF`!Ilk6V%NRq@es~<9f9Tbva7XrJ+;X{yTmobsF6&W6T)bMAu2gLH z%8Ghm!e>iMOYnIHC_?3Mc(Tg_n2QFZga`!~U92XMMGoVA8yGVg6YhT}EMc*3#@=Pu z=Od@@eY~x-d7HNIH+X$QVxm&Mr9o$B=QA%aCjOl#4Smc$3IE{WOKNJb z1ZI}b+niQO+T-Hlg3Tx$`6w}y5^aHKBp3w)&>&9o^4^FHm`O1`QKW`BbLjkS5<)`7 zoR`G#fmj>4l#NMmvw74mZz+3iVy>sz(#p!q*Vnn%4%_{zhK5G0aMIk3bPbvlCr+TB zlXvxCe{3V)bb`$$gZ^?Bx2KkKuT^s7&gG(o?@Pt1#ZLAJ5J;GqoPj{mdXXR7#)B#$ zDQQ0gLj%Y>xsYZTE)tUbZP5C0$By-Xy6Tf%OwV4tP!;`)WxWG+YWyQf;KJJg5F@NQ zgc~&dvWAAe>8f=wdD;tX(i}uKy{=dde`R7}dE&hKXBILjeehC+*8yDp5UL8qdnlIhAO+Iu7`xYg&Wrc>OjZY%3`M5`N2p5Q2Z6|{eu7-M9YA)F3;MH`3)ids;=&F zI4}kn*yAF*LPA1_SjS{Lr_BLnXVcry0(CPW^+AZ#N6zJp`g{Do?J)CXAk3qgjiBTm z=G$&^ID4l)RMPlpQhPtMs0s?}J;h>56@FM~Xjwmt9Qh%px^0NOx@dJ0rFfE)bDyuY zyK35vr5XDc;J-7FDU5S8CMPEeBrGJPX>>6qIhhrNVF38G54Q=?=8>PsN=-~522u^U z1r*~u;2YTd&1p9|G_|zGI&w}EUfxBkrx1dXDAKjjc^$~dNnCz?1V1Y?b3%p%=6{NlCcd1%R2kgtJ2 zD_~PE4x6D2@=Lm<02@c#DMfmHIEocFmCn?bw_GDD!}eAGWShPcWh?5uenyrfZH>|o zP`?xypb^@2fDk6R`_xkLom~joI>+odEL*~a2PByZHRjuRsTOkmtzMn;A}MTCC{ z_ZX9sz*Dcn!^i6#drKc#PyFz`*P0pttOhaGe~BlkWOE||yMgcsfnZSdt)IrY2G7#2 zpymh>69a@mV*;zgD3SN~+s?(s$G?F!h$ekTGtVCZ4&M5kI?j~E8NW_opt0s;#`|4p8c*Wb0Ii!K zH?OU)FT;@}SzqewEpxwUIY@?Dg2MXb)hoJ1b{@ZY(*#=2hzNRa!>`0n!=-WAPO2fX zk{)D;JhUkazZ2mU7Zn(n`MpNj+PJGgI+FJq+KEC0r9=lFj z>;9uh5r+DH(Pd-J9#<{}hYCri0RRd@T&zqY9Dnpp0XbgA><2r#@~u1p&@h2?Ob$B_ z$t4c-J?uev=#;pkqM|WI!>UlN`X0ce0c?Uwc{v4ndBPe%ohU-PXFcf2EV}|A`VRXI zdY$LUoS7dir(*B8x3@q^51iJ+8p1>Jhb2!NkpxYJNE+Y^GhUUDvj;wad%iew@qM3t z*9RUpHnx_sve-uV$*u(erkL->sG}rk(AoFfUSKM}8G)Dlv%uywW?upT3n-q|+FuJ& zN`|XoFg-4-XCcK3z^KwJafyUGFgxHU+Jx=^+X}mCFLWKiBUP<)VG$8^Sh;-jzOBHO zg)8G}<0?Y@0Pg>>=r|Sxph}?I5P>rq2l6`` TVL$-GM^V0}QIZeKdg3B^GHL`XC z6B9ll;BFepC}{KE(k&PsFdh$Ft{JI8Q7*gy)BOy<=jILARwW zMcRkJ9Qxa`Mm6c+GCTY-wZZ(vj*CUHRe^RasSK3CbZc&7m+krU3=h4-!wa zadQ$ycXu}-;X}*LLiDm}uUsJWSS(oo-U9~?bmW>fg169#x)eIS&H-dA0$gPB5R3nA zjs}=?Euspx>kFg^^7He7C*47UzJr1jSQ(JJMce}yg3h2$7zu*56>V*yTn1mLjvlRt zGlJma?$)%MM3!j)M3M++Fl|R6i^qTe_R;i~2NfI=F3Z8oZ{NO!Gx_c3`TX7q^yK#+ zK8#^yVjTu4-8x0fhc|>BJgCMG{KhVow6*1<=QBBmZ3-ABmEMf)blG$7Q8Xda2!6AZ zU`<%9x$(42OFRf|$0=S+8SkTt`A*C4SArY++kgE!;c*PnOmKmTbo#-1W&x|=J*XjU zx~(^F-bDNX0n4hUruXgd7ham_>MEyj)PMcD=U!U>%Hf3`9ZHR1pUXrvb)j>#J?jKG z&oIE!^$g80^s;6+Gyk)=MCGkhw|x2H-Cg7eXMEv5Uk@PiIX!J}R6Mbx%u&o}9$#R$ zU?3eof1XNDPY?E$47fkaO~AeoF_ZC0f6T38X48Ub6vxas-oh<;j&zdwSQ87T{9jP2 z*5n>ulXk`WG|Y7Yxis=(`72itGwTZo(Uy{uvVbFtrke#lb-U9s^6215DG&sVPF|%6p*WvdjXs5s!L@ zx0%>3eo~V9jA%&@`JbWMAXW-ul{$beD^^eUlm{;#{}0gNKg?rX3W}v?zOtrpfFKD{ z(4O>w`6;dIkwJ`B0<;0B++0n9d_)=yoLGt7dwC$ z#za>Ek*KVzORGs1JeZg_H%~JuC;2NiulQqbF30SK!z(Vvw(cv9`!CiY7q_rS`Qi|fz;B<+yrT_qybbQ(8&s$HQPCLF+bWb1B1$bmIr{gdM zC|`O$d9nj)snml%4@^unjq}^w%`GfqAy2`#-G*&XWGJ8#*hEdX=2_^$z|H#jkx1%j zc^epa5&1D_Q?ggDqA*@ZyR7U&HUlCp21`5|F-w)2=JGQ6pTtJ%bEO@>xXDoaNf?nZn?SqD6ixE{5Q2;yo`#Hhr)w)*>;NqgAbK|Sx)YBwq{xk z$Wj)(1>4DXaYC{f05X#b(YxF=$8S!Wf_#Xu!$J)BIU>GPU?b2?4qdd=_gZAjSc{|U zP_0~Cgpe;+Si+F_mDcMY44LmA7Ul)euxxN$5!e704cfH(4bQwWXY3#!e+j z%~;#A1lgc>A3vTvd-mFhQ5|+A@}8W4=6J;Uj!WkVRyh0S@v;XMfhX~R2wDWW8TAQ{ zkD@3=b6s9+(`iLY{>?VU{;E0>)C4O^gD|)u!yvPn2Ni*U1(1{+2L4A;Ut4Hacoh)= z@%0e2jM1MTlEqDv*vMg886ppXpvV?y{Q_u)?=6R}U}R@R1Mz>_(T|6&!dJpL{^>(a+;U`P7>a87mMmzhtY^+VM{0sLVgtha&7OBg z_2C4BhaKhLz&di+_bEcSNUyplCnq;p%Y&H$vwSz^Y01#Kr4=86)FeL2_{ZBr7&a^- zB2m~=V{g|?3`iW!H~ebqgkmQM(fo?lBQjO#@lCoV-0yzB(gm< z%)nVdu@aU7>J&Z|O=ntd1ouN?2nq-&BeIx?#IGn^2Vq6>C>E|9>5z`5D}#_7l^c}8 zbJ~T^5YzzqQ_bYgE{eJo5j-rcrup+}#d=<0k=BK~+npcfx>d0al8GORHDAc0{o^q- zICvhp5<*YK!GLXISFVunK6r+t7r9tSujYRy)orJ{eIe8%8FuN?CB?)mG)SCZ06@5r zdcCZ+b{Erj2vLK0@GWoERYrn_pzK>t{5T8ZpMrIWy}P_@uW{=Z0L~$zNu4YAhC%`& zkEqmWXYvw9+bOy>tR^B|60z)SAi)HCMY3AY%&ZY?Ob#u#)$xr&vH0Ui!GAfuG-P!pX?6#zaGK|RWp|#~E+Hv{>!NzZe0>w&ZuLiGo@KMIwGa3hLY$(ih6PFa|nlgt^OIOs&7n5iv{ zDMlP2IP6PG1nAinm24pPoVaj7%~=>0F7zRSXopWDQ+Lz2)&z{|-G>j*i4I029dov6 zP6m!)`K_*^yj;0xAZz+EGq3pn-8`&N4zTx$P&=Y}+er8HVxq^QH;|5ehsy`7n(w^& zv4C2)F68X?9Xp8R7#A1UyZ7&ppEBjd9r6ZZ2F?v2@ciyUm%x{hvuWC!KW>?2xo)~3qv+-1 za{`+g9Gu1txKhR`d<|L$_t?4n-=V+)qphjeFuL0zYIhe1L5SQGf&im`9kY`{4&b zMFO!N{xn^D0%#W|0Q8vWAoGL|j)se9ivR1^SAV`YKvCUBVS@ZaT>yV`t9T^%eb*6OXq6LNtzS|{)876!C0lh`U-r<7h^cae2g*Stk@ zT~jC2+Ew^o7>D2DB4@-y|@JH$erwg~0g0>Jg3ekdLRv-l;DkXmuTGs&jHxXL{ z3!#$A(lZ-Ygs!+^J0Gt3)rpGf^0RRp zu`k*wck0)-)oJm<4>w*>{5n@a@$01ONJ!s7a?umUevdh~>S?=`C=l^1@TS?NB_p^t zYd{H*j#EcOmj@3ZwO{73>p**vV{XG-3dCiLm4&-RLXNOh(Hr2Ev*0>F90=pS+hOAD zV(l3SOnSHiLfl2TJf4jlYDl`g5P^pTAHIOONAPw`^-)AW0|Ekw!(aOP6@cSc-l|}p zCM*0SJrI7J(_Ag<_|sQJCN17iq#p-}h`?Npg3G|b0HNf%t}oJJSw_He5ok#pkxQ)x z)BBmFw-eKS{EQGcH}^5KgW<(|9q?4KJrck^h@Dut)a?jC`aN>MVE)NV2fEhUAx(XW z5qHO2h$|@ZES{6|7Vd!@a=~Vt8s6a$n8P5Ut>PMxV1*Ef?w=iudS`$uV;AEf|(T{0qLnWd~eGhR< zYsC@zB!u^`*yTTS%@`5Lj0Lq6>%J{_`SP_ zqE`CohNP8IW}t19*`k;3e#|Wvn3%t?GB0bVO?2ZQw7IcMuf-mb+mN-N3Q0aRTX6i{ zB_>wakMgoV*=}=AQqDdV-yzISyTmuNFub!sAN`Yf?8MPIj2gr|r4$vZkTN-Ik^c*V zYpViBW3;G(zCJUNjRn%*GUuX=d3M2mj@iY<{uWIaTx>+xF}%FNUUu$1@~yVHr$TH$>HgiQ&)Bc)It~kj7m8Tbi2>c?cqkp*(6~SRYJ&Z+x zHhA_y!NDFl*oO=)j=O35sV8hsh$j=QhhXaVhI8CFb zt2G_UxQZ{ralb>D8@CIJ=Y)lYeSC#=#KhbRF2zIr;(5^d3PQvI;5Y=7kkPu=0sVm+ z=LHdvN3+-Paz>cp^H5#rAwk=>9sFnwH+FuaC@LZE4r+3j<+r)S!=O6teR>!9b?V0^ z$6V8|dVQdodOOBFNf~>Vz5W30tlkdg29Y0U*4Nfr9P6lHubk1y9?hycCLE!!Bg#OW zMouu22F*hz^EU1Vs5%0iyl;BC5qbaE58~Pub4!x7_4SFEVnj9;;i+x*Dhp;k#ahOV zPYBcy71cnPE~pnW3JL?vJ$)mic{G%XGZClg+@aGQJa`Z)c+l(DZ$F%)pNpyq#-FU- z_LAD8%MT6?l9;1$NGzWItD!TwyhkhQWhT$BTRM?G%I0Dd77HUmGlkvmEHBeJ9!T=J ze5EmG?h5Oy+QKHiN7=DyW=PFINzLqb2dl(H_x||P@L3N7nxUgf;yA5aVKNT_i`1f` zB@&y1wAW{hF0!-ll2U>Z6(S#wU7NDL^!wBF9IRhh$~be#i%0e3x98dxlA4I|2Zn}8 zA7q}wVUGoe(lR|Cj8VL>H1CDBLtoCe%*s=v)XC`!@Chqd~_E!*9zr#iV z!y{Z)0=OfzWR0V37p;crcz#vjTXyU|s95A+^Um36rkTP**zSMKN0DW zcXuQgo4X(vb7O$nY|_@OCPtMs@Si&6{rveJn1b@k%KNdyUA7*G``;`89+2dE!Wt}W zke22chqe?Yci13NIAX>7QPOi`sWG9reR@--TQTux_saO|O@$g1T`Pr1W7K*NtCwF> z^m5&0hK0NPFh>Yzq7Y!;X{sE)bX(S7!si!N6*J`(08o&qmg1H1 z(}Y@@y9WHsD0C4gy9%s%5M(1j15%4v;}_^rz#rrBu|ymXDg%@e2ff9)IU=$HB>P6; z@TtGr_lpxV>l8P z=A$a%oI=+?zu~KitWI(-PWx4dZK(e_-a2H!N*n}nIQg@^{XATKoCF8Tya{`n22v@f zoooOQG$x7xSUZkZKY~cW_3*bQNM{9+$K&TW+T2(N0Yo5&IJS!D#u3i=X?(;Xhh47A4sM~++t*F;_dNc=4)+Yi{WbC~eWh$<1+ zf(}Z!p9P#T#qErq$z3R-NjzOZU;>80qlKD7oH!CL z7|)l-5%>>>M-B=3{&a`|8WGySe_<@?EM5F)VwAA_z^*~|odu&e>CCC$lKU%GCj9UFROCEaNED^FaKRY@*`r0u+W5T&7vLV00M$62` z#)ju^({?Cb1QsLCh}fKWVM77|(Z_1QnBM7WzrsSH2Sv%=&C8c2I?h++EtX(e$w`!d z?W3pn!PF`%FWV%^>DTTjlqtj} zjDNmQte9hI)za@NcK+7fED7idlVLC0>C<}XlyLe89YaG>uilBwry7#cGKwDeaS$mF=BhCUB+niz8mx8-3__PeVcuB7(6k zW{rM;N%HA2A)zCnByc1& zEL&hu&@9e2_W@7gH45=+o=QVjeD{CsAwpAXhX5pWBZ=QZBjBStj<2c;Uwr0%T%jt06{#x76%`-vVBiA>Ocgale+Ix2SJx z*?ckbT6-~y4%D4l7IEs|wL-?kc$$$hdL2I(55CaZe&Y@QcL!E*I^Lu%=EdBH)7r$? zg2(t^GWGiGVC{kJq@=2~Y74PWdzWrsy}IY)gD!6*EiXGw_t}S!iILGV^zJR)PeMn@ zpG!H|`XI5B^kjI3)NTpY%>L`*F+z?#kQ8PyBBbB8CKFB)I>&y&fZF8yxF>ky!tX$8 z4%7NYAFjRLO{2%=cSneh^jXroasEe6VmeWSmG8T`iR(p;FtTV2-cp64aYYhYjiS+5+j7Fw7$?q1@?4H~TdP=gI5f!6{yVmqz@lC$MD1 z`$$@=qz}H#l#xQ;BHU*jFN{r0e1h7>D*(uWgz&N*X}mF{;%|#JW1-#b){Tt~-S{Wa zaS5#eX!fR~FY#-UsGjU8VMG94QAtT0x)D$onMibFW$GNS$&a^TY7tOFi36HAfi9+? zK#Aiucn#03$mD7fyBU&9osx{X6^Z5?951J0UszZ;obEm%_hFsBTZLqT=6T)uWqN=!`bWo5xGrq*BWp`nzw`Q5sH8>!3XD?cCJ(!*<8 zG@knQ?H&xFa)e5V@WANk=rIuy2HY9Rm$sKzWM#`9@7Ns^7xx%OY-fSZZusSoii(5@ z>YYV70j}njo}S*m(1_`D2l$;3l+d#uLA20qN|3c%`u$H2Ar1;+Wi+K55g56?T&kt4 zOuSKKX4#4E@L| zuZNK{Ux@=Qq#&fih#xr)i}wJFwjm)VW?{ieyaEEJ9re(aNZg2Ax0ro$m~r?JRP%}? zIu=$|J$MXMWZTv7ngo}XF;qb28Sho2xG1Ss4E8h28}HqLlVR4zVB>+HRENKE?$S#KWFhA@wyI2 zTq+F&JXFzBDE-CD!}Pz~z1!XiAhU$cCyCjJ=Kln%LKF(#-tib27$C*%k771H{CE@O zNhOis&v(?DXV0~3*B*Eu-nW$4?auU~aFry4-&XjUHSWC>tSoO)A1vhs&^Nzrj>xXS zB*_4dM){rHawKJ&tIN#DVG*@IAaYFb!i8R7PEA$<;|vZB<$pD!Ne*?vVF_a#jd{?S z_Xujh0OlUp$wlsq&7K`Ux#k?n?am~M0TVLN!DGG$GS3}`ZUlAyTFPds|M=g?#9?qh6hWRQyRLWG^sjiHAb zWtYmZe)n#ODiOf~Z{QHO>VdLv->4vyT*9k8)L0cN@3Y|`?KQluX&bV|2qKOKY7n7c$9&eQINsU6X5+e2!XHG zONAH4!Y3s}Xo(CpK(La<7ZJZ|B1gl+!*koz)OT&o$)q!H-*ZmltQY}@a_RE1KjPxz zzTp%Izg4Fr+`WV+g&6jCE;R_uth&`hJ{Z=8h{iNE0hk$nK;JTf_}sm7*L`XJn`el zjvwEO7`haYW3HV=WloFR+!Ez+pfO#G1Hw0zm5*l$^HvJ5vL;_K(I4wgxoRz(T0Ss~ z^L~CfZ3Hju)hEh?N|}(=7`{tO;+0D3fS-1Y<1gD?Xfk7&;{t?;&;@4Fw=6vw;ze6! zfhVtz4T2(AD#R*YNEUC9CwoIH676b(F<8QDD@?RQy!K!iDNh2gV)IstP%(-)(E;>* z2FNKLn8lfG5*WO}!ND-Cw&BG*Wq4L3Bkdi8Dvs}T z!t}t&f6IxQ>ut5oh4xkeCeMU#Mo3w;wzhJ@x+1<4!@(VH%Srvp*y=?fe4#s_}@xB~*vp zEtBOV(cPb8e-ZtM7#KLV5gQXj607(O2>pQ$l2K~6ZV_=s%*sBl{a=VOhQmR&d$&7I zgYf{Kx?ICx{Di zxgHWsSd|yZQA*0m$qlQuhO+TN%6NiK6eVQ;7;oIkx&Yg7TJh#h&rhEm(;FMK7u1DnqXj;=^$#dZ4?P0>NtG0475Aa|vH~aD3R^Au_iZCjN|elRTgPBw4^o4h~Af z0LAXPceN|h-=74#ggDXzK-G@dwBU537itl0)v5Pzn>G^o_{y#rr=n-xKIb{K3aHVQ zUkN@u=Qdu#o8CZ_N6P(4U}17zUS7f^?77}{1GR$i(e=#vA2%x<-!k#)PZnQ7i%EZv z!%4&$8uYJcetyK!5aP8%I19MFva-_n*GJ+UK*gWj+*}!WRS1F@xcHKM5qt)v-yIG6 z*s)_IIQWj9>84igZcITZ5={xdPk;oR_iT+)02+pOQjO7Vj)?szA}yLh$(T%b^TQN4 zFETs%lba9+Ogpm6U?b+sdjy=2(ZxmJrHI^^-4XW$PtnlO5aLNMrXj%%ugJ;a{P6QT zRTOOFuBCq4wVK}SbdT2(~~Gg@=` zW#)IBAHOI3pA#5Zr<3?Ws_oKV%({&{J`a_NHX=f?-X*H zrC`$Ln;Xtvt4Nr;B1=||+$qsI@ty(V#X$0A%GRs+ys>>+IRHS>Gix zGBWV)&`OxlGx*K%zzvKVD?{U0y9A*a9^E~%` zUFUV4-|e<|);NP@Bh(=q-d6;$pR=hT%qwTzR5a1Gpa)*->>-M5OpGtr-|nxstzR!9 z&P#Zt~CobDz3=*O%(xx{Kq{$PviupK)lI4c%QtVPN0?DVE32OqO8-Yy1F`bQDCf^ zgW0@@?e%vXXe9@Z8`qlxkM25;4}8X{})z!6$1Aaw=eMT%bnnjKaS%$0s=KTp~WcWoH z%GyrKd07%d95>wzhe*y~N{Y{$w(nMcm3Su%=NK>pIptrn%<}2St6Lfk2PJ6uZO%@dI#o_B z=AJu_cut5Le7|V1k!?(wHLEj5gLIF&0ZNYYX2FyDX90$4vBm{lpsp?}E#99iR+SF&$I?R9Yp(moXT_V z+_~rX$K1YkOARQ3wKIceLIe&16Lh7O^D!CPPO7-Jtsn4d`sM~r1mNrSb8-r(UQ=`Pb>1V;G*M&1U6@ge!0b9Wsn*sO z529nP=jOIYmRd0&oOhFpE-d3);O^bsiG3OIT;tCc&H<4Ogm6I%c@RH$-Lte{){w5Q zuF|-bN?=F$Mr<3Uadxu@755qXVb}VN8@ZzbS7h+E2TLBI&0Jy5rL|`~R>G&t_oVmG ziGG=R9c}arP>G_VB5y!#bX5W#RZ^b_g5UQ3Tv<{%a^2`c9MUzga(+IOMj@QRIgB4=GxS zE;IB!PnYgH8X6WRbRc91#&nGgslZw;NKKjprsL;~;5M;Bxaf$6{o(ZoaziioR`c~- ziWnh?Z6>@(Mp*jM|G^^Fk^8xJb>tE^iW>s+z=;>R12kRNsTvdn5$1^Y&(78LuKX0+ z^fhWw+Zp$?g@FMTPY)((UR#tn(F$QQYa@xvRU$JeAUL?|Ukwc+cO!Z8h{ad?vb5h6 za2o9d$`k0d{552?6AcUuV#4m3BoAyiv|m^zBr=H!mB1`wwm%a*Y0Yy9c2j`9XjHgn z{tK1N{%hDjs!3Y=OxPM z$`!iF;F=cFGp^u1!hbYBQRSuxzilmbKDogUjnOOe!`a`qOLq5fZi1TYNN5&QjSn3)=!$7gt9#4~ zQ}u4%;8KRTV&P(GCCMOS^}Cg zIIVX(DLJsJI}v-p^|yV?H8o5k zRb+?G9kbHab&=!a`_;C`j8!Gk_niQ?a4kX_sSO8SDSy=$!_huywt{f>JWiPQ7+hj zdGccxpI;huM`OY;GgH%jO(R-3WJNK6ow5g_70cd3PZcMaKX8zR^>Tz{-Skwuai9X5 zFG;OBc;LXx*xkF#TVgZo_bxWw#Bt_Ocx~%9Wxm3pDl}HjafY0UzKgJW0#TG+-Z)A) z^%#ilKqJKM0)SbU;NF$}Wamd{;) z_Ob;GQybc9tl64r(X#NshOLqut{|AfeS7zcbY;NdN>-N7gDX-AwF*? zM;UKQtRq%x{ijbE?(3({3(&m!$jD{moF%u-K9p%{Xk4ctbyrs2ErtS`Sq}7HNOm>1 zuvp=Bb+_BuyIhH)B-;rP6a%@7e{VEeHoueHSL>;*e7a)0 zH2s6)oQZ|n0}Bt_x&Bol{FVFu_M0OdzFsj-Q966zUEF|v83r{P^2h3T7%A{kc^5kh ztAuUNX!h(J%6~#_4FBf~42f<9yCQ~4EtEkk%hTjhy=0+M>7k+`ALTjGhp9@q#c^8@ z=01a_v9W^}wnJ`5rT*;KZ{AcgB1;A5SEG9ITR680?%3md%db{RM~^NDO%Ug_&w@!89pMT;Y<1t$!SG- ze#Q4ZZJqsb9+7tI6qW8v?RMln(MRp{oC)hDmJr24M^)IQ$lyEFyVeH`&&y3u;Cnkg>%$i~rHf&yng zY%U7vH)%Ry?>Y8$(K?$nzq3c9nMQzxx6|&>0CnVz3Cte`-s9UB9S)?TMC&mOj-r)- z#(<0)c;UhY>EN>W;Man36zn9`!tGf-$=Q9l6n=mxB7_RhlEK1-;Rz3L(q&BhMw?=4 zW3z{g)5p)xZ}jNVqJj@G{(Tok_hI!MuT>5+jJ!x)S#xBI%jKsz*pCHgAy}C<+a6`|Vga+*%LG7)`vE zmNrf}eox-1@R#3szad0fuNL^gz`(hCmd5g5QVv3wy3my>@RQWW7J%6?t^{#jkJv_!%N6@T5%(&16(!;vTvdYE4l1Dcj~cCJrKUvrj5~ z1M$gdexj_be6z4HpPQ6(f8uwdw7H*I>`QT$r9NS)aJC&#_9>WmN^??}`LaAEZj4Z` zBrC*(&KzcFcGGK;*gd5)Kdohnx71^B4r1=LhTb*z^=E2r0U9L^whlyY?U4ZluZr_iOiIPY zsb%X5;$shnyPi6n(#B`J$46NoT`75^cNdS0C;Qah+%%p!CT@!ByS_kLrQdD(p6haY zO53l?O`afCD{j~(-(OKLW`~+$)|kLXzp9v=1W~qn^*V5=ec;$#qbB-oUNsoPjTR3u&7ttwl})|k#xu$A#n1>xv>|Fbhq)rQDq|P zHD6+zjhwd~=5vX?;v>Kzw zj#a3U+7z6sM_L9AaU83FgBzZe?TiWd3Gtk@ommJ`xA5-M~{ICmO&tKY-IIiTaVU$9( z@7~6fu?p4lDMJdWD3TR8O-Ki|H!19lVC7f$FkFpjv7`Xl=Oy5YA4cU&A@2F=sZ-0_pN zO>(g-Zv9s8-Fx1^BbGCJEO_)VU|!2LqLUSbK`?2cutN#4b@+K^`0e-J)=rv z`r4{6(VaAGrS0t^FK@qm`TW~){kZPx0M_qoX~jjcHI2W?n7-h6gUW^DZF(`y3%vIO>B?D%ci zwZ<2pnk_0d&a9l-(7`3x*6X3p`vI6`96}f@6D}+?yWHftHFVuBqsx;LF6XCSpYk1^N^6CegJ%h5CK(<55GF%O#+FqEXqoW8; zh|uSp^4b9(6VSPt{cCW5c!9tyzS4u*yb^=x0=^>PSD-e|uwatR+^OYz)^ z|EKg~Q*_rX*qEdPr^eMD&{-;wE^ay5;}4>ob#6Cx@;B#<~v%wJb`wUoHOumY-yu!}Ax^c& zaqRK=T_3m^f(mcTtK2Uxo(6v}JYbIT3#*P_I(Q(u+hfI$2M-?j96zpBP*8wu#AiW? z6%9P~P;udvGY(!|x^&5^`UDmzpLe*laIc!76je~U>ONP6AZBmAjcKUHv#WL4;GhfB zYN%>{AR#XRYvC1pln+_p@#~~X{iuB}bq$@I!-s!;TT^r5!UY8Y@rrfP4M9$|N(mME z)(%4yI*EBjWG=9#vuS+?N6xeSb5oY>h-Gp??{wRkwD14v@>*5HxV>uXIr}yq)Ajfd z)2a6Aw&@4s$Qw5dBe9=N=12c*q$ma4YQyczz{TDH4}# zjAlD%w(KaSB6@k8-g!C@l0jUip&t@HiMlg~9F68YF%{)02}l z*p}EL!J#qwjK+F4a^hK%6FrOf5Y1?J}FMaWhFkEg&cfKMHa>#CDF z*X#~cT^+H9c5tKOd}Cw=INix~w{G5Nry%Q~`o&i|_qjRY(yH#G>@E*nT@*fkxs0mr z82?++_ct;dW#n2fZq)MD?l4sD_D}OgArkAbzPvo?BcSTxnw z)7fcG#-E!G$3=I%RHw8uYsTEXqQLy@%)Q&MRIfX}wf{kbi0)=RPMWCudIsn>h=ybC zT%V;S@#5JFsK!2$G(&obB2OYYyFcys?q=i5ch=WSQ@?+Zm7aTrS^P0;&W~+y{__;w zO?~_J6{Jx%oju!G9MRPNNmK9ndhSd6^`rLBm%B=0P%1J~MUv{f=)vFbUF&QA2t5X? z92$ug?p;nM4|??=uj0xBLC>N{&|29_M$PyBp|F^wgh}nOrkju6eEJ zUSrkz7ow1tm6Z_+vcunhx}()j&+Fs`c`9ZV=OxLi`HuCaAWW3$KQUskkR})nblGbh zNluq*k0k(4Z>y`L`FnY{>c%98C!q%qilmj1J|%~y4^du8pE;?>;gM}D35udFBM1wG$tiMXKD}kJf&=~?G=5C z&63~4)Hb28eGZ0 zZbNy{qJM6?!Oblg&t7VS3tRpS#p(q4_Db~{61`OC2mU-yYyXy!_z0&>pPmBj@)-@W zOW`LPvkgEXVTTS`EeSUn>O>#@j*dR@+&L4M2&Al!iK00|VO@A>ecT=QYrqz5vskk$ zEVj=1`*&M_V{W6)6A6n9p#G&Jnd*4txHN#xKgdx?(vHmZupzzy+z7tf!6liyg= zw?laLX`2N=gs2ae_%orpAKfIdoG?2dfN94rtEmtr}EM2xNpW)yLd%p(L;O)Y~WqY(N7c3|cGA7c(uER7OK>*#k zW5*Z4q+~b|n|UWI%iDUv0&V)@4YW?04JHLl;j*1H7cY47#~**-xX3QHpZem5mMw;*T`ggP*h~c$!7-(ZVx2TtLD|d-V?~#97pYsJ#|Wa ztj9vFu5UaZk2dzD#gv9jp!+n&M*A9&3E%Ka=VI?orX1zn)V$B)-7+pquPHe1k zVBVgK7sibll5ybF)shFK5Y-Y&T$ToV@wb?X(<$$v-Q!e-e1CjEobzIYg{(kL)U&(_ zzD0;S>1@PslVEkb*9V#mAs)oeKb{pOs2WJ7Hj+4dsXU1`89h1vB?eJivD&8GJ0}7&!+B>B5ftk1XU1Y$(sl;Wm-{Wd6Pkh0L4a=|0qev3iCN@&+(Y1 zBaX5XvPEyPpzB=jcns6fn7Q)&Sb4XJ9e-Sl5K|xbdSbddp$2Mea3lkjEVWA=pSWf%0M#;OK`tQck_Z(ZnNg+!$&-B{kpAn z?wd=8!osu(M@ge53oXtr95} zbu4-{9#;A${hxD34oc#5i!WKOGgL#yZ$`?leQc1Lnv9q(;B3X?UG==aC?K{G50zor zBC7T!Chs}vr9?DLWw(=^;8$7c030eLuOcpvCeaPYJzIEqU0-465GG=o+3NB~E1U%7UdtY#U^&_@f_;xmRQq*$5iF zD#+Haa1l3>jnkZ$)Zxe5xPN;2pdTkocY~YDyr=sFA>uEC~f}&AA1=*Z$ zJcWjsC$r88Do4r9)oYYlfh^~r4$#^}J)|8vGclGxTnnz5*(Ms5mZ0N;gN+@nK4j8Q z3hJQI19b-a&Fkzq8Sh!OiyqVV9gmF_NidYfNAY*Q^quwNC+}VR@YX;-pn0ee8A(v9 zW@f_bEgtXVdQ1qBKo_9T3AfJ`YP@OQCr+H`fru2GJ_<*N&=|sQb&x)O{+!2HFWh;E z(L^dFnE)`_9VBlpf8Yu6)YIp69{3D$So#@jF&BfKizEuPM3YetZ~+aF!N!D*hy%zS>^JS}E(NiH3(8_7pDNR%NX)~s9SgA)_Nj(pkrr@@1Nbn`~?Jm$j&O?Qr* zqv+^vth~TUdb~f6e`JQKDV#m2Z9Q;#!4du#p3#~}w zWxVYOnk!X*QdHDJ43tK2OW2Vkx5W8C?DxfQTz1h5~_x+E~#Ko<&uC`ssr{{^8 z?Zn&Z(PKNDpa8VN9(TmYS8tgR_V0=Ddik8l1L%gC+77iV1m9%AA(qO1 z^hhWWkvU`wRXazx0FijS7RU2+Gqe5k^Y3y9rsop@c3l8Mn7&{sqnL1;;Jq@uN)oNx z(r+A@UiKdX@J30=Pt5ir{t(O__`f6Q(-B?g>UG0^R2YMTdq$B9*lIlpQVZdt*rVDP zr?M~zA|n;jb9ho9tcd6PZ=;V0WjTo5hd zKFIj%Mw`~Xlb>J+nmqsXT6e!7%>2V8VF(1#Yq%cr-!1ZM^{aitCPF*wP}oOF={eA4 z#n4`SC{aGK|M6%=UnYi&b0{5LZqe#O{|LI|ueSpb_~vkCbDVU+W0Bl7N?2zA3pw3n zuz7F9=(#(3t`Ddr_rs>~?;c>oBT66z=}CuMN)pH7BF5$jl+E~*Qv{h@ z3YhrjQ**_aDJi1JNiM^~|6LRPep(=WM*o!MS7Rm*+@wqivT?N9{_me2>!^Io@JHe9 zUf(CmSoOy@`0g!~-0T1SN?*?or~mhl6ZV)NUwmx4^7$2WBK4XLANlMoL_x=XMu-UQXzpwt^@Bjb)pZ?(1e$&2>8Y5?WdXdCGGp89(O){|C@jp|e B4{87a literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.map new file mode 100644 index 00000000..f36e4f0e --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.md5 new file mode 100644 index 00000000..0ebff82d --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +5299787f29f4347ddb9b62a3bff77989 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_bidi_streaming_00_01_executor_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..916dd343a0e4d430255b7c4237392fb255c2d0eb GIT binary patch literal 33225 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 TVL$-GM^V0}QIZeKdg3B^GHL`XC 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 B4{87a literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4-members.html new file mode 100644 index 00000000..ec9c0090 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4-members.html @@ -0,0 +1,145 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html new file mode 100644 index 00000000..30f15747 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html @@ -0,0 +1,703 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, client-streaming rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >:
+
+
+ + + + + + +

+Classes

struct  rebind_executor
 Rebind the ClientRPC to another executor. More...
 
+ + + + + + + + + + + + + +

+Public Types

+using Stub = StubT
 The stub type.
 
+using Request = RequestT
 The request message type.
 
+using Response = ResponseT
 The response message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto start (StubT &stub, ResponseT &response, CompletionToken &&token=CompletionToken{})
 Start a client-streaming request.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read_initial_metadata (CompletionToken &&token=CompletionToken{})
 Read initial metadata.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})
 Send a message to the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, CompletionToken &&token=CompletionToken{})
 Send a message to the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (CompletionToken &&token=CompletionToken{})
 Finish the rpc.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + +

+Static Public Member Functions

static constexpr std::string_view service_name () noexcept
 Name of the gRPC service.
 
static constexpr std::string_view method_name () noexcept
 Name of the gRPC method.
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::CLIENT_STREAMING
 The rpc type.
 
+

Detailed Description

+
template<class StubT, class RequestT, class ResponseT, template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor>
+class agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >

I/O object for client-side, client-streaming rpcs.

+

Example:

+
asio::awaitable<void> client_rpc_client_streaming(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::Stub& stub)
+
{
+
using RPC = asio::use_awaitable_t<>::as_default_on_t<
+ +
+
RPC rpc{grpc_context};
+
rpc.context().set_deadline(std::chrono::system_clock::now() +
+
std::chrono::seconds(5));
+
+
RPC::Response response;
+
if (!co_await rpc.start(stub, response))
+
{
+
const grpc::Status status = co_await rpc.finish();
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
+
RPC::Request request;
+
request.set_integer(1);
+
while (co_await rpc.write(request) && request.integer() < 42)
+
{
+
request.set_integer(request.integer() + 1);
+
}
+
+
const grpc::Status status = co_await rpc.finish();
+
if (!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
+
std::cout << "Response: " << response.integer();
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + + +
PrepareAsyncClientStreamingA pointer to the generated, async version of the gRPC method. The async version starts with PrepareAsync.
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. After successful cancellation no further operations may be started on the rpc (except finish()). Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ service_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::service_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC service.

+

Equal to the generated Service::service_full_name().

+

E.g. for the .proto schema

+
package example.v1;
+
+
service Example { ... }
+

the return value would be "example.v1.Example".

+
Since
2.6.0
+ +
+
+ +

◆ method_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::method_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC method.

+

E.g. for agrpc::ClientRPC<&example::Example::Stub::PrepareAsyncMyMethod> the return value would be "MyMethod".

+
Since
2.6.0
+ +
+
+ +

◆ start()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::start (StubT & stub,
ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Start a client-streaming request.

+
Attention
This function may not be used with the initial_metadata_corked option set.
+
Parameters
+ + + + +
stubThe Stub that corresponds to the gRPC method.
responseThe response message, will be filled by the server upon finishing this rpc. Must remain alive until this rpc is finished.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the rpc was started successfully. If it is false, then call finish() to obtain error details.
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::read_initial_metadata (CompletionToken && token = CompletionToken{})
+
+inline
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Attention
If the server does not explicitly send initial metadata (e.g. by calling send_initial_metadata()) but waits for a message from the client instead then this function won't complete until write() is called.
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ write() [1/2]

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::write (const RequestT & request,
grpc::WriteOptions options,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Send a message to the server.

+

WriteOptions options is used to set the write options of this message, otherwise identical to: write(request, token).

+ +
+
+ +

◆ write() [2/2]

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::write (const RequestT & request,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Send a message to the server.

+

Only one write may be outstanding at any given time. May not be called concurrently with read_initial_metadata().

+
Parameters
+ + + +
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientClientStreamingRequest< StubT, ResponderT< RequestT >, ResponseT > PrepareAsyncClientStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >::finish (CompletionToken && token = CompletionToken{})
+
+inline
+
+ +

Finish the rpc.

+

Indicate that the stream is to be finished and request notification for when the call has been ended.

+

May not be used concurrently with other operations and may only be called once.

+

The operation will finish when either:

+
    +
  • The server has returned a status.
  • +
  • The call failed for some reason and the library generated a status.
  • +
+

Note that implementations of this method attempt to receive initial metadata from the server if initial metadata has not been received yet.

+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata received from the server.
  • +
  • Attempts to fill in the response parameter that was passed to start().
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< ResponderT< RequestT > >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.js new file mode 100644 index 00000000..bff33f33 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.js @@ -0,0 +1,21 @@ +var classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4 = +[ + [ "rebind_executor", "structagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4_1_1rebind__executor.html", "structagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4_1_1rebind__executor" ], + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#aaa5fac7ed627fe95e1200d25633884b1", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#aa4e18c75b6fb163a780408e2a118ec1d", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#aad54ab42b4d0f7ec548fe527d7c4a9e5", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#afe3aab926de22d76fdb5e0d347c5d8c4", null ], + [ "service_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#ae2e44ea56d1c15036646e906939fbb11", null ], + [ "method_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a22b858db8af03d35bef7b60f7f389950", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#af645e0dead95e4949f84971426536ed0", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a8de4c2a086f185be57765c0be380ca1b", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a6fe42f409cebf57fbbf1faeedfc5dbdd", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a8ae746c9baa2aadd2a7a9cbd0a94d365", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a0171335c8cded03fe915af5cb791bbdf", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4.html#a4a74888f2f96f5bb8b13218373aaa80c", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..74f60e3a --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..42e0f4ad --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +ea97031d7429e21b1a20e2192c80eb79 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0a55202c85cdbdec43692efd8866fcb2a142c3 GIT binary patch literal 22811 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 VD5a}24{68Lm)my7)I=xeyaTsgr%V6< literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.map new file mode 100644 index 00000000..74f60e3a --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.md5 new file mode 100644 index 00000000..42e0f4ad --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +ea97031d7429e21b1a20e2192c80eb79 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_client_streaming_00_01_executor_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0a55202c85cdbdec43692efd8866fcb2a142c3 GIT binary patch literal 22811 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 VD5a}24{68Lm)my7)I=xeyaTsgr%V6< literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4-members.html new file mode 100644 index 00000000..f5220a87 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4-members.html @@ -0,0 +1,144 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
context()agrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
context() constagrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
executor_type typedefagrpc::detail::RPCExecutorBase< Executor >
finish(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
method_name() noexceptagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >inlinestatic
read(ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >inline
read_initial_metadata(CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
Request typedefagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >
Response typedefagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >
service_name() noexceptagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >inlinestatic
start(StubT &stub, const RequestT &request, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >inline
Stub typedefagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >
TYPEagrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >static
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html new file mode 100644 index 00000000..745e9580 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html @@ -0,0 +1,650 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, server-streaming rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor >:
+
+
+ + + + + + + + + + + + + + + +

+Public Types

+using Stub = StubT
 The stub type.
 
+using Request = RequestT
 The request message type.
 
+using Response = ResponseT
 The response message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto start (StubT &stub, const RequestT &request, CompletionToken &&token=CompletionToken{})
 Start a server-streaming request.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read (ResponseT &response, CompletionToken &&token=CompletionToken{})
 Receive a message from the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (CompletionToken &&token=CompletionToken{})
 Finish the rpc.
 
auto read_initial_metadata (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
 Read initial metadata.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + +

+Static Public Member Functions

static constexpr std::string_view service_name () noexcept
 Name of the gRPC service.
 
static constexpr std::string_view method_name () noexcept
 Name of the gRPC method.
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::SERVER_STREAMING
 The rpc type.
 
+

Detailed Description

+
template<class StubT, class RequestT, class ResponseT, std::unique_ptr< grpc::ClientAsyncReaderInterface< ResponseT > >(StubT::*)(grpc::ClientContext *, const RequestT &, grpc::CompletionQueue *) PrepareAsyncServerStreaming, class Executor>
+class agrpc::ClientRPC< PrepareAsyncServerStreaming, Executor >

I/O object for client-side, server-streaming rpcs.

+

Example:

+
asio::awaitable<void> client_rpc_server_streaming(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::Stub& stub)
+
{
+
using RPC = asio::use_awaitable_t<>::as_default_on_t<
+ +
+
RPC rpc{grpc_context};
+
rpc.context().set_deadline(std::chrono::system_clock::now() +
+
std::chrono::seconds(5));
+
+
RPC::Request request;
+
request.set_integer(42);
+
if (!co_await rpc.start(stub, request))
+
{
+
const grpc::Status status = co_await rpc.finish();
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
+
RPC::Response response;
+
while (co_await rpc.read(response))
+
{
+
std::cout << "Response: " << response.integer() << '\n';
+
}
+
+
const grpc::Status status = co_await rpc.finish();
+
if (!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + + +
PrepareAsyncServerStreamingA pointer to the generated, async version of the gRPC method. The async version starts with PrepareAsync.
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. After successful cancellation no further operations may be started on the rpc (except finish()). Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ service_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientServerStreamingRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncServerStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >::service_name ()
+
+inlinestaticconstexprnoexceptinherited
+
+ +

Name of the gRPC service.

+

Equal to the generated Service::service_full_name().

+

E.g. for the .proto schema

+
package example.v1;
+
+
service Example { ... }
+

the return value would be "example.v1.Example".

+
Since
2.6.0
+ +
+
+ +

◆ method_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientServerStreamingRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncServerStreaming, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >::method_name ()
+
+inlinestaticconstexprnoexceptinherited
+
+ +

Name of the gRPC method.

+

E.g. for agrpc::ClientRPC<&example::Example::Stub::PrepareAsyncMyMethod> the return value would be "MyMethod".

+
Since
2.6.0
+ +
+
+ +

◆ start()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientServerStreamingRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncServerStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >::start (StubT & stub,
const RequestT & request,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Start a server-streaming request.

+
Parameters
+ + + + +
stubThe Stub that corresponds to the gRPC method.
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the rpc was started successfully. If it is false, then call finish() to obtain error details.
+
+
+ +
+
+ +

◆ read()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientServerStreamingRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncServerStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >::read (ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Receive a message from the server.

+

May not be called concurrently with read_initial_metadata(). It is not meaningful to call it concurrently with another read on the same stream since reads on the same stream are delivered in order.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that a valid message was read. false when there will be no more incoming messages, either because the other server is finished sending messages or the stream has failed (or been cancelled).
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientServerStreamingRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncServerStreaming, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCServerStreamingBase< PrepareAsyncServerStreaming, Executor >::finish (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Finish the rpc.

+

Indicate that the stream is to be finished and request notification for when the call has been ended.

+

May not be used concurrently with other operations and may only be called once.

+

It is appropriate to call this method when:

+
    +
  • All messages from the server have been received (either known implictly, or explicitly because a previous read operation returned false).
  • +
+

The operation will finish when either:

+
    +
  • The server has returned a status.
  • +
  • The call failed for some reason and the library generated a status.
  • +
+

Note that implementations of this method attempt to receive initial metadata from the server if initial metadata has not been received yet.

+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata received from the server.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >::read_initial_metadata (CompletionToken && token = detail::DefaultCompletionTokenT<Executor>{})
+
+inlineinherited
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.js new file mode 100644 index 00000000..5f890a71 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.js @@ -0,0 +1,19 @@ +var classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4 = +[ + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ac81a92f73b6032ab5163473f8af67ec8", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ab8fe0d6e998dbb9c3dac45bb3ebea1fd", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a7f04ffe67672564e8fc084cea8186e9d", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#afe3aab926de22d76fdb5e0d347c5d8c4", null ], + [ "service_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#aeb82d28bcdb03ae6f757fe3574124b3f", null ], + [ "method_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ad0fbe938aa2186379c0115248e530310", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ac2a6ff58092fb44d7af8371f3e5835df", null ], + [ "read", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a05dbadc3c83ae568f787023074d91423", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ac036fe983bdb3582a9c4ef549696cde8", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a1f3342f57017775ec75f7f3317949b05", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4.html#a361598fd336c38e5f282457263865229", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..0f01472c --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..266270a2 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +cd926a3cf74ab86c00fd6685dddd16c3 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..17da60cd591e35d9639f8dcb9f464d58209e5ce0 GIT binary patch literal 32376 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 + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.md5 new file mode 100644 index 00000000..266270a2 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +cd926a3cf74ab86c00fd6685dddd16c3 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_server_streaming_00_01_executor_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..17da60cd591e35d9639f8dcb9f464d58209e5ce0 GIT binary patch literal 32376 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 + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< PrepareAsyncUnary, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< PrepareAsyncUnary, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
context()agrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
context() constagrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >inline
executor_type typedefagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >
finish(ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
method_name() noexceptagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inlinestatic
read_initial_metadata(CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >inline
Request typedefagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >
request(agrpc::GrpcContext &grpc_context, StubT &stub, grpc::ClientContext &context, const RequestT &request, ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inlinestatic
request(const Executor &executor, StubT &stub, grpc::ClientContext &context, const RequestT &request, ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inlinestatic
Response typedefagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >
service_name() noexceptagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inlinestatic
start(StubT &stub, const RequestT &req)agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >inline
Stub typedefagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >
TYPEagrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >static
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html new file mode 100644 index 00000000..e8de6c03 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html @@ -0,0 +1,673 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< PrepareAsyncUnary, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< PrepareAsyncUnary, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, unary rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< PrepareAsyncUnary, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< PrepareAsyncUnary, Executor >:
+
+
+ + + + + + + + + + + + + + + +

+Public Types

+using Stub = StubT
 The stub type.
 
+using Request = RequestT
 The response message type.
 
+using Response = ResponseT
 The request message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void start (StubT &stub, const RequestT &req)
 Start the rpc.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (ResponseT &response, CompletionToken &&token=CompletionToken{})
 Finish the rpc.
 
auto read_initial_metadata (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
 Read initial metadata.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr std::string_view service_name () noexcept
 Name of the gRPC service.
 
static constexpr std::string_view method_name () noexcept
 Name of the gRPC method.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
static auto request (agrpc::GrpcContext &grpc_context, StubT &stub, grpc::ClientContext &context, const RequestT &request, ResponseT &response, CompletionToken &&token=CompletionToken{})
 Perform a request.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
static auto request (const Executor &executor, StubT &stub, grpc::ClientContext &context, const RequestT &request, ResponseT &response, CompletionToken &&token=CompletionToken{})
 Start a generic unary request (executor overload)
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::UNARY
 The rpc type.
 
+

Detailed Description

+
template<class StubT, class RequestT, class ResponseT, std::unique_ptr< grpc::ClientAsyncResponseReaderInterface< ResponseT > >(StubT::*)(grpc::ClientContext *, const RequestT &, grpc::CompletionQueue *) PrepareAsyncUnary, class Executor>
+class agrpc::ClientRPC< PrepareAsyncUnary, Executor >

I/O object for client-side, unary rpcs.

+

Example:

+
asio::awaitable<void> client_rpc_unary(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::Stub& stub)
+
{
+
using RPC = asio::use_awaitable_t<>::as_default_on_t<
+ +
grpc::ClientContext client_context;
+
client_context.set_deadline(std::chrono::system_clock::now() +
+
std::chrono::seconds(5));
+
RPC::Request request;
+
RPC::Response response;
+
const grpc::Status status =
+
co_await RPC::request(grpc_context, stub, client_context, request, response);
+
if (!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
std::cout << "Response: " << response.integer();
+
}
+

Alternative version that waits the server's initial metadata first:

+
asio::awaitable<void> client_rpc_unary_initial_metadata(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::Stub& stub)
+
{
+
using RPC =
+
asio::use_awaitable_t<>::as_default_on_t<agrpc::ClientRPC<&example::v1::Example::Stub::PrepareAsyncUnary>>;
+
RPC rpc{grpc_context};
+
rpc.context().set_deadline(std::chrono::system_clock::now() + std::chrono::seconds(5));
+
RPC::Request request;
+
rpc.start(stub, request);
+
co_await rpc.read_initial_metadata();
+
// Do something with:
+
// rpc.context().GetServerInitialMetadata();
+
RPC::Response response;
+
const grpc::Status status = co_await rpc.finish(response);
+
if (!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + + +
PrepareAsyncUnaryA pointer to the generated, async version of the gRPC method. The async version starts with PrepareAsync.
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ service_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientUnaryRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncUnary, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >::service_name ()
+
+inlinestaticconstexprnoexceptinherited
+
+ +

Name of the gRPC service.

+

Equal to the generated Service::service_full_name().

+

E.g. for the .proto schema

+
package example.v1;
+
+
service Example { ... }
+

the return value would be "example.v1.Example".

+
Since
2.6.0
+ +
+
+ +

◆ method_name()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientUnaryRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncUnary, class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >::method_name ()
+
+inlinestaticconstexprnoexceptinherited
+
+ +

Name of the gRPC method.

+

E.g. for agrpc::ClientRPC<&example::Example::Stub::PrepareAsyncMyMethod> the return value would be "MyMethod".

+
Since
2.6.0
+ +
+
+ +

◆ request()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientUnaryRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncUnary, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static auto agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >::request (agrpc::GrpcContext & grpc_context,
StubT & stub,
grpc::ClientContext & context,
const RequestT & request,
ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inlinestaticinherited
+
+ +

Perform a request.

+
Parameters
+ + + + +
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
responseThe response message, will be filled by the server upon finishing this rpc. Must remain alive until this rpc is finished.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status). Use grpc::Status::ok() to check whether the request was successful.
+
+
+ +
+
+ +

◆ start()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientUnaryRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncUnary, class Executor >
+ + + + + +
+ + + + + + + + + + + +
void agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >::start (StubT & stub,
const RequestT & req )
+
+inlineinherited
+
+ +

Start the rpc.

+
Parameters
+ + +
reqThe request message, save to delete when this function returns, unless a deferred completion token like agrpc::use_sender or asio::deferred is used.
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class StubT , class RequestT , class ResponseT , template< class > class ResponderT, detail::PrepareAsyncClientUnaryRequest< StubT, RequestT, ResponderT< ResponseT > > PrepareAsyncUnary, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ClientRPCUnaryBase< PrepareAsyncUnary, Executor >::finish (ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Finish the rpc.

+

Receive the server's response message and final status for the call.

+

This operation will finish when either:

+
    +
  • The server's response message and status have been received.
  • +
  • The server has returned a non-OK status (no message expected in this case).
  • +
  • The call failed for some reason and the library generated a non-OK status.
  • +
+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata sent from the server.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBase< ResponderT< ResponseT >, Executor >::read_initial_metadata (CompletionToken && token = detail::DefaultCompletionTokenT<Executor>{})
+
+inlineinherited
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< ResponderT< ResponseT > >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.js new file mode 100644 index 00000000..1ff5020a --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.js @@ -0,0 +1,20 @@ +var classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4 = +[ + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#ae494858ba1fb77cc03a473d475f89fec", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a3cbcb0c2a8dea17a5f8e2031b5f0e135", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a42c626f687ccf2ac90c4f97c1428ba05", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a4bb04cc6b06744978476e7566c776c5c", null ], + [ "service_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a0d95b3e778fd04576727a180ced2ad49", null ], + [ "method_name", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#adca43de2480909300ee83f4e7d0fefe8", null ], + [ "request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a53680b344c2176c7ddd5fd97e331517a", null ], + [ "request", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#adc02ff48c51bd547e52fe0b69f671dc2", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a0cc8fb2b4fdbc30dfaa214b7faa16828", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a630c84662c7ffef3f82799c92b32d313", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a1f3342f57017775ec75f7f3317949b05", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4.html#aebbb738d826d482f508a01cd59fcd6b4", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..447ce1bb --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..64e4b0b2 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +89f479135b9cf816cc33fd74d9ad7300 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4302dd9e5bee1cb8e68e2c0e38c8f4172b91b75b GIT binary patch literal 29249 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 literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.map new file mode 100644 index 00000000..447ce1bb --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.md5 new file mode 100644 index 00000000..64e4b0b2 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +89f479135b9cf816cc33fd74d9ad7300 \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01_prepare_async_unary_00_01_executor_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4302dd9e5bee1cb8e68e2c0e38c8f4172b91b75b GIT binary patch literal 29249 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 literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.map b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.map new file mode 100644 index 00000000..7baad744 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.md5 new file mode 100644 index 00000000..e0ee7175 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.md5 @@ -0,0 +1 @@ +a1214ed427e254724134501867f0e60a \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.png b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_5be979306263a9411a518530be4de1fb.png new file mode 100644 index 0000000000000000000000000000000000000000..46449bb2c98659d4d94f391a7fe6767083840e28 GIT binary patch literal 34428 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%0D{Qa18UvGG#yrj8bV)6O3EV)^nf}MJxNj4+^jI= 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 literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.map b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.map new file mode 100644 index 00000000..7baad744 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.md5 new file mode 100644 index 00000000..e0ee7175 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.md5 @@ -0,0 +1 @@ +a1214ed427e254724134501867f0e60a \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.png b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_782469177b3a302f624f875517844517.png new file mode 100644 index 0000000000000000000000000000000000000000..46449bb2c98659d4d94f391a7fe6767083840e28 GIT binary patch literal 34428 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%0D{Qa18UvGG#yrj8bV)6O3EV)^nf}MJxNj4+^jI= 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 literal 0 HcmV?d00001 diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4-members.html new file mode 100644 index 00000000..8363877f --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4-members.html @@ -0,0 +1,145 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT, ResponseT >, Executor >inline
context()agrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
context() constagrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >inline
executor_type typedefagrpc::detail::RPCExecutorBase< Executor >
finish(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
read(ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
read_initial_metadata(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
Request typedefagrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >
Response typedefagrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >
start(const std::string &method, grpc::GenericStub &stub, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >inline
Stub typedefagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >
TYPEagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >static
write(const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
write(const RequestT &request, CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
writes_done(CompletionToken &&token=CompletionToken{})agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >inline
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html new file mode 100644 index 00000000..f26c6e62 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html @@ -0,0 +1,626 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, generic, streaming rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >:
+
+
+ + + + + + +

+Classes

struct  rebind_executor
 Rebind the ClientRPC to another executor. More...
 
+ + + + + + + + + + + + + +

+Public Types

+using Stub = grpc::GenericStub
 The stub type.
 
+using Request = RequestT
 The request message type.
 
+using Response = ResponseT
 The response message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto start (const std::string &method, grpc::GenericStub &stub, CompletionToken &&token=CompletionToken{})
 Start a generic streaming request.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read_initial_metadata (CompletionToken &&token=CompletionToken{})
 Read initial metadata.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read (ResponseT &response, CompletionToken &&token=CompletionToken{})
 Receive a message from the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})
 Send a message to the server.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const RequestT &request, CompletionToken &&token=CompletionToken{})
 Send a message to the server (default WriteOptions)
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto writes_done (CompletionToken &&token=CompletionToken{})
 Signal writes done to the server.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (CompletionToken &&token=CompletionToken{})
 Signal writes done and finish the rpc.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::GENERIC_STREAMING
 The rpc type.
 
+

Detailed Description

+
template<class Executor>
+class agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >

I/O object for client-side, generic, streaming rpcs.

+
Template Parameters
+ + +
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. After successful cancellation no further operations may be started on the rpc (except finish()). Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ start()

+ +
+
+
+template<class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_STREAMING, Executor >::start (const std::string & method,
grpc::GenericStub & stub,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Start a generic streaming request.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the rpc was started successfully. If it is false, then call finish() to obtain error details.
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::read_initial_metadata (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Attention
If the server does not explicitly send initial metadata (e.g. by calling send_initial_metadata()) but waits for a message from the client instead then this function won't complete until write() is called.
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ read()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::read (ResponseT & response,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Receive a message from the server.

+

This is thread-safe with respect to write() or writes_done() methods. It should not be called concurrently with other operations. It is not meaningful to call it concurrently with another read on the same stream since reads on the same stream are delivered in order.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that a valid message was read. false when there will be no more incoming messages, either because the other server is finished sending messages or the stream has failed (or been cancelled).
+
+
+ +
+
+ +

◆ write()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::write (const RequestT & request,
grpc::WriteOptions options,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Send a message to the server.

+

Only one write may be outstanding at any given time. This is thread-safe with respect to read(). It should not be called concurrently with other operations.

+
Parameters
+ + + +
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ writes_done()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::writes_done (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Signal writes done to the server.

+

May only be called once. Should not be called after performing a write with the set_last_message option.

+

Signal the client is done with the writes (half-close the client stream). Thread-safe with respect to read. May not be called concurrently with a write() that has the set_last_message option set.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBidiStreamingBase< ResponderT< RequestT, ResponseT >, Executor >::finish (CompletionToken && token = CompletionToken{})
+
+inlineinherited
+
+ +

Signal writes done and finish the rpc.

+

Indicate that the stream is to be finished and request notification for when the call has been ended.

+

May not be used concurrently with other operations and may only be called once.

+

It is appropriate to call this method when:

+
    +
  • All messages from the server have been received (either known implictly, or explicitly because a previous read operation returned false).
  • +
+

The operation will finish when either:

+
    +
  • The server has returned a status.
  • +
  • The call failed for some reason and the library generated a status.
  • +
+

Note that implementations of this method attempt to receive initial metadata from the server if initial metadata has not been received yet.

+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata received from the server.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< ResponderT< RequestT, ResponseT > >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.js new file mode 100644 index 00000000..8032480e --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.js @@ -0,0 +1,21 @@ +var classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4 = +[ + [ "rebind_executor", "structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n003cb43b2a2fe522958e614cece7f6cf.html", "structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n003cb43b2a2fe522958e614cece7f6cf" ], + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ad20cfa0db0604367ac06d132cc5568cc", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ab17fb315d9316707b442296f9096519c", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a09949deac664f28273aa1b4f806759b1", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#afe3aab926de22d76fdb5e0d347c5d8c4", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ae6c73a1a9effe4787d9581cd620dad31", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#afb6a4be476b5cab862000ba87b70e289", null ], + [ "read", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ad3830bd5b441d8b80c2a5dd33ae8ad2d", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a613e43b75d508d451dac44e474256bf8", null ], + [ "write", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a7617653d30c2f57cdaeffcefed89793f", null ], + [ "writes_done", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a2d19b1441bd69861873989f76f5875e2", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a9a9b990891472214354e3425616f7b23", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___s_t_r_e_a_m_i_n_g_00_01_executor_01_4.html#abfcfaefdbf807291d880efafd9436d64", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4-members.html new file mode 100644 index 00000000..6a4debb1 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4-members.html @@ -0,0 +1,143 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< grpc::GenericClientAsyncResponseReader >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >inline
context()agrpc::detail::ClientRPCContextBase< grpc::GenericClientAsyncResponseReader >inline
context() constagrpc::detail::ClientRPCContextBase< grpc::GenericClientAsyncResponseReader >inline
executor_type typedefagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >
finish(grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
read_initial_metadata(CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >inline
Request typedefagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >
request(agrpc::GrpcContext &grpc_context, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >inlinestatic
request(const Executor &executor, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >inlinestatic
Response typedefagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >
start(const std::string &method, grpc::GenericStub &stub, const grpc::ByteBuffer &req)agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >inline
Stub typedefagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >
TYPEagrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >static
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html new file mode 100644 index 00000000..f98d16b8 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html @@ -0,0 +1,606 @@ + + + + + + + + +asio-grpc: agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor > Class Template Reference
+
+
+ +

I/O object for client-side, generic, unary rpcs. + More...

+ +

#include <agrpc/client_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >:
+
+
+ + + + + + +

+Classes

struct  rebind_executor
 Rebind the ClientRPC to another executor. More...
 
+ + + + + + + + + + + + + +

+Public Types

+using Stub = grpc::GenericStub
 The stub type.
 
+using Request = grpc::ByteBuffer
 The response message type.
 
+using Response = grpc::ByteBuffer
 The request message type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void start (const std::string &method, grpc::GenericStub &stub, const grpc::ByteBuffer &req)
 Start the rpc.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})
 Finish the rpc.
 
auto read_initial_metadata (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
 Read initial metadata.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+grpc::ClientContext & context ()
 Get the underlying grpc::ClientContext
 
+const grpc::ClientContext & context () const
 Get the underlying grpc::ClientContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + + + +

+Static Public Member Functions

template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
static auto request (agrpc::GrpcContext &grpc_context, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})
 Start a generic unary request.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
static auto request (const Executor &executor, const std::string &method, grpc::GenericStub &stub, grpc::ClientContext &context, const grpc::ByteBuffer &request, grpc::ByteBuffer &response, CompletionToken &&token=CompletionToken{})
 Start a generic unary request (executor overload)
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ClientRPCType TYPE = agrpc::ClientRPCType::GENERIC_UNARY
 The rpc type.
 
+

Detailed Description

+
template<class Executor>
+class agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >

I/O object for client-side, generic, unary rpcs.

+

Example:

+
asio::awaitable<void> client_rpc_generic_unary(agrpc::GrpcContext& grpc_context, grpc::GenericStub& stub)
+
{
+
grpc::ClientContext client_context;
+
client_context.set_deadline(std::chrono::system_clock::now() + std::chrono::seconds(5));
+
+
example::v1::Request request;
+
grpc::ByteBuffer request_buffer;
+
bool own_buffer;
+
grpc::GenericSerialize<grpc::ProtoBufferWriter, example::v1::Request>(request, &request_buffer, &own_buffer);
+
(void)own_buffer;
+
+
grpc::ByteBuffer response_buffer;
+
+ +
if (const grpc::Status status =
+
co_await RPC::request(grpc_context, "/example.v1.Example/Unary", stub, client_context, request_buffer,
+
response_buffer, asio::use_awaitable);
+
!status.ok())
+
{
+
std::cerr << "Rpc failed: " << status.error_message();
+
co_return;
+
}
+
+
example::v1::Response response;
+
if (const grpc::Status status =
+
grpc::GenericDeserialize<grpc::ProtoBufferReader, example::v1::Response>(&response_buffer, &response);
+
!status.ok())
+
{
+
std::cerr << "Rpc failed: unexpected response type";
+
co_return;
+
}
+
+
std::cout << "Response: " << response.integer();
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + +
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

Terminal and partial. Cancellation is performed by invoking grpc::ClientContext::TryCancel. Operations are also cancelled when the deadline of the rpc has been reached (see grpc::ClientContext::set_deadline).

+
Since
2.6.0
+

Member Function Documentation

+ +

◆ request()

+ +
+
+
+template<class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static auto agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >::request (agrpc::GrpcContext & grpc_context,
const std::string & method,
grpc::GenericStub & stub,
grpc::ClientContext & context,
const grpc::ByteBuffer & request,
grpc::ByteBuffer & response,
CompletionToken && token = CompletionToken{} )
+
+inlinestatic
+
+ +

Start a generic unary request.

+
Parameters
+ + + + + +
methodThe gRPC method to call, e.g. "/test.v1.Test/Unary"
requestThe request message, save to delete when this function returns, unless a deferred completion token is used like agrpc::use_sender or asio::deferred.
responseThe response message, will be filled by the server upon finishing this rpc. Must remain alive until this rpc is finished.
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status). Use grpc::Status::ok() to check whether the request was successful.
+
+
+ +
+
+ +

◆ start()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + + + + + + + + + + +
void agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >::start (const std::string & method,
grpc::GenericStub & stub,
const grpc::ByteBuffer & req )
+
+inline
+
+ +

Start the rpc.

+
Parameters
+ + + +
reqThe request message, save to delete when this function returns, unless a deferred completion token like agrpc::use_sender or asio::deferred is used.
methodThe RPC method to call, e.g. "/test.v1.Test/Unary"
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::ClientRPC< agrpc::ClientRPCType::GENERIC_UNARY, Executor >::finish (grpc::ByteBuffer & response,
CompletionToken && token = CompletionToken{} )
+
+inline
+
+ +

Finish the rpc.

+

Receive the server's response message and final status for the call.

+

This operation will finish when either:

+
    +
  • The server's response message and status have been received.
  • +
  • The server has returned a non-OK status (no message expected in this case).
  • +
  • The call failed for some reason and the library generated a non-OK status.
  • +
+

Side effect:

+
    +
  • The ClientContext associated with the call is updated with possible initial and trailing metadata sent from the server.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(grpc::Status).
+
+
+ +
+
+ +

◆ read_initial_metadata()

+ +
+
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ClientRPCBase< grpc::GenericClientAsyncResponseReader, Executor >::read_initial_metadata (CompletionToken && token = detail::DefaultCompletionTokenT<Executor>{})
+
+inlineinherited
+
+ +

Read initial metadata.

+

Request notification of the reading of the initial metadata.

+

This call is optional.

+

Side effect:

+
    +
  • Upon receiving initial metadata from the server, the ClientContext associated with this call is updated, and the calling code can access the received metadata through the ClientContext.
  • +
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that the metadata was read. If it is false, then the call is dead.
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::detail::ClientRPCContextBase< grpc::GenericClientAsyncResponseReader >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.js b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.js new file mode 100644 index 00000000..32f8ad2e --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.js @@ -0,0 +1,19 @@ +var classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4 = +[ + [ "rebind_executor", "structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01900d803413fc821ee6c15a9d5231e14e.html", "structagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01900d803413fc821ee6c15a9d5231e14e" ], + [ "Stub", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a8cec6132a63b51481847db130de97d12", null ], + [ "Request", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a313126cc0eadd7c4dbbfc8aa8a45bc10", null ], + [ "Response", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a3729ec552aaf715925391a9596cc5b15", null ], + [ "executor_type", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a7b8c6b2cbac09f6f60e2495a13cffe75", null ], + [ "request", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#ad2344b88476b5a2c07448939c9edabcb", null ], + [ "request", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a71bc3a05a7738b9b87bc4ad657f189e0", null ], + [ "start", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a1ec544b72d885bd8997f071c48136862", null ], + [ "finish", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a15449f5b95e72c3df40201356f7e1c6c", null ], + [ "read_initial_metadata", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a1f3342f57017775ec75f7f3317949b05", null ], + [ "get_executor", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a056f94eadae189c43a6919d09e9f0031", null ], + [ "context", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#a5602cbb3e4c886c89405ad0404626e64", null ], + [ "cancel", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#ade0c1cd5b69a524efbf92059fda88c1c", null ], + [ "TYPE", "classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4.html#abb156a59d90304904f66098612ed7d75", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..4221df4f --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..981f8c63 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +fc78dfd6137898e9dbbda5ce4345edcf \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1fce33fd2f75f2703f6537ace57080f5d1d7de GIT binary patch literal 27820 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 + + + + + + + + diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.md5 b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.md5 new file mode 100644 index 00000000..981f8c63 --- /dev/null +++ b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +fc78dfd6137898e9dbbda5ce4345edcf \ No newline at end of file diff --git a/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.png b/docs/classagrpc_1_1_client_r_p_c_3_01agrpc_1_1_client_r_p_c_type_1_1_g_e_n_e_r_i_c___u_n_a_r_y_00_01_executor_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1fce33fd2f75f2703f6537ace57080f5d1d7de GIT binary patch literal 27820 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 + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::GrpcContext Member List
+
+
+ +

This is the complete list of members for agrpc::GrpcContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedefagrpc::GrpcContext
executor_type typedefagrpc::GrpcContext
get_allocator() noexceptagrpc::GrpcContextinline
get_completion_queue() noexceptagrpc::GrpcContextinline
get_executor() noexceptagrpc::GrpcContextinline
get_scheduler() noexceptagrpc::GrpcContextinline
get_server_completion_queue() noexceptagrpc::GrpcContextinline
GrpcContext()agrpc::GrpcContextinline
GrpcContext(std::size_t concurrency_hint)agrpc::GrpcContextinlineexplicit
GrpcContext(std::unique_ptr< grpc::ServerCompletionQueue > completion_queue)agrpc::GrpcContextinlineexplicit
GrpcContext(std::unique_ptr< grpc::ServerCompletionQueue > completion_queue, std::size_t concurrency_hint)agrpc::GrpcContextinline
is_stopped() const noexceptagrpc::GrpcContextinline
poll()agrpc::GrpcContextinline
poll_completion_queue()agrpc::GrpcContextinline
reset() noexceptagrpc::GrpcContextinline
run()agrpc::GrpcContextinline
run_completion_queue()agrpc::GrpcContextinline
run_until(const Deadline &deadline)agrpc::GrpcContextinline
run_while(Condition &&condition)agrpc::GrpcContextinline
stop()agrpc::GrpcContextinline
work_finished() noexceptagrpc::GrpcContextinline
work_started() noexceptagrpc::GrpcContextinline
~GrpcContext()agrpc::GrpcContextinline
+
+ + + + diff --git a/docs/classagrpc_1_1_grpc_context.html b/docs/classagrpc_1_1_grpc_context.html new file mode 100644 index 00000000..66ae8c44 --- /dev/null +++ b/docs/classagrpc_1_1_grpc_context.html @@ -0,0 +1,879 @@ + + + + + + + + +asio-grpc: agrpc::GrpcContext Class Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::GrpcContext Class Reference
+
+
+ +

Execution context based on grpc::CompletionQueue + More...

+ +

#include <agrpc/grpc_context.hpp>

+ + + + + + + + +

+Public Types

+using executor_type = agrpc::BasicGrpcExecutor<>
 The associated executor type.
 
+using allocator_type = detail::GrpcContextLocalAllocator
 The associated allocator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 GrpcContext ()
 Construct a GrpcContext for gRPC clients.
 
 GrpcContext (std::size_t concurrency_hint)
 Construct a GrpcContext for multi-threaded gRPC clients.
 
 GrpcContext (std::unique_ptr< grpc::ServerCompletionQueue > completion_queue)
 Construct a GrpcContext for gRPC servers.
 
 GrpcContext (std::unique_ptr< grpc::ServerCompletionQueue > completion_queue, std::size_t concurrency_hint)
 Construct a GrpcContext for multi-threaded gRPC servers.
 
 ~GrpcContext ()
 Destruct the GrpcContext.
 
bool run ()
 Run ready completion handlers and grpc::CompletionQueue
 
template<class Deadline >
bool run_until (const Deadline &deadline)
 Run ready completion handlers and grpc::CompletionQueue until deadline.
 
template<class Condition >
bool run_while (Condition &&condition)
 Run ready completion handlers and grpc::CompletionQueue while a condition holds.
 
bool run_completion_queue ()
 Run the grpc::CompletionQueue
 
bool poll ()
 Poll ready completion handlers and grpc::CompletionQueue
 
bool poll_completion_queue ()
 Poll the grpc::CompletionQueue
 
void stop ()
 Signal the GrpcContext to stop.
 
void reset () noexcept
 Bring a stopped GrpcContext back into the ready state.
 
bool is_stopped () const noexcept
 Is the GrpcContext in the stopped state?
 
executor_type get_executor () noexcept
 Get the associated executor.
 
executor_type get_scheduler () noexcept
 Get the associated scheduler.
 
allocator_type get_allocator () noexcept
 Get the associated allocator.
 
void work_started () noexcept
 Signal that work has started.
 
void work_finished () noexcept
 Signal that work has finished.
 
grpc::CompletionQueue * get_completion_queue () noexcept
 Get the underlying grpc::CompletionQueue
 
grpc::ServerCompletionQueue * get_server_completion_queue () noexcept
 Get the underlying grpc::CompletionQueue
 
+

Detailed Description

+

Execution context based on grpc::CompletionQueue

+

Satisfies the ExecutionContext requirements and can therefore be used in all places where Asio expects an ExecutionContext.

+

Performance recommendation: Use exactly one GrpcContext per thread.

+

Constructor & Destructor Documentation

+ +

◆ GrpcContext() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext::GrpcContext ()
+
+inline
+
+ +

Construct a GrpcContext for gRPC clients.

+
Since
2.4.0
+ +
+
+ +

◆ GrpcContext() [2/4]

+ +
+
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext::GrpcContext (std::size_t concurrency_hint)
+
+inlineexplicit
+
+ +

Construct a GrpcContext for multi-threaded gRPC clients.

+
    +
  • concurrency_hint If greater than one then this GrpcContext's run*()/poll*() functions may be called from multiple threads
  • +
+
Since
3.2.0
+ +
+
+ +

◆ GrpcContext() [3/4]

+ +
+
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext::GrpcContext (std::unique_ptr< grpc::ServerCompletionQueue > completion_queue)
+
+inlineexplicit
+
+ +

Construct a GrpcContext for gRPC servers.

+

The resulting GrpcContext can also be used for clients.

+

Example:

+
grpc::ServerBuilder builder;
+
agrpc::GrpcContext grpc_context{builder.AddCompletionQueue()};
+
+
+
+ +

◆ GrpcContext() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
agrpc::GrpcContext::GrpcContext (std::unique_ptr< grpc::ServerCompletionQueue > completion_queue,
std::size_t concurrency_hint )
+
+inline
+
+ +

Construct a GrpcContext for multi-threaded gRPC servers.

+

The resulting GrpcContext can also be used for clients.

+

Example:

+
const auto concurrency = std::thread::hardware_concurrency();
+
grpc::ServerBuilder builder;
+
agrpc::GrpcContext grpc_context{builder.AddCompletionQueue(), concurrency};
+
// ... register services, start server
+
std::vector<std::thread> threads(concurrency);
+
for (auto& thread : threads)
+
{
+
thread = std::thread{[&]
+
{
+
// ... register rpc handlers
+
grpc_context.run();
+
}};
+
}
+
for (auto& thread : threads)
+
{
+
thread.join();
+
}
+
    +
  • concurrency_hint If greater than one then this GrpcContext's run*()/poll*() functions may be called from multiple threads
  • +
+
Since
3.2.0
+ +
+
+ +

◆ ~GrpcContext()

+ +
+
+ + + + + +
+ + + + + + + +
agrpc::GrpcContext::~GrpcContext ()
+
+inline
+
+ +

Destruct the GrpcContext.

+

Calls Shutdown() on the grpc::CompletionQueue and drains it. Pending completion handlers will not be invoked.

+
Attention
Make sure to destruct the GrpcContext before destructing the grpc::Server.
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::run ()
+
+inline
+
+ +

Run ready completion handlers and grpc::CompletionQueue

+

Runs the main event loop logic until the GrpcContext runs out of work or is stopped. The GrpcContext will be brought into the ready state when this function is invoked. Upon return, the GrpcContext will be in the stopped state.

+
Attention
Only one thread may call run(), run_until(), run_while() or poll() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run_completion_queue() or poll_completion_queue() (since 3.2.0)].
+
Returns
True if at least one operation has been processed.
+ +
+
+ +

◆ run_until()

+ +
+
+
+template<class Deadline >
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::run_until (const Deadline & deadline)
+
+inline
+
+ +

Run ready completion handlers and grpc::CompletionQueue until deadline.

+

Runs the main event loop logic until the GrpcContext runs out of work, is stopped or the specified deadline has been reached. The GrpcContext will be brought into the ready state when this function is invoked.

+
Attention
Only one thread may call run(), run_until(), run_while() or poll() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run_completion_queue() or poll_completion_queue() (since 3.2.0)].
+
Template Parameters
+ + +
DeadlineA type that is compatible with grpc::TimePoint<Deadline>.
+
+
+
Returns
True if at least one operation has been processed.
+
Since
2.0.0
+ +
+
+ +

◆ run_while()

+ +
+
+
+template<class Condition >
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::run_while (Condition && condition)
+
+inline
+
+ +

Run ready completion handlers and grpc::CompletionQueue while a condition holds.

+

Runs the main event loop logic until the GrpcContext runs out of work, is stopped or the specified condition returns false. The GrpcContext will be brought into the ready state when this function is invoked.

+
Attention
Only one thread may call run(), run_until(), run_while() or poll() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run_completion_queue() or poll_completion_queue() (since 3.2.0)].
+
Template Parameters
+ + +
ConditionA callable that returns false when the GrpcContext should stop.
+
+
+
Returns
True if at least one operation has been processed.
+
Since
2.2.0
+ +
+
+ +

◆ run_completion_queue()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::run_completion_queue ()
+
+inline
+
+ +

Run the grpc::CompletionQueue

+

Runs the main event loop logic until the GrpcContext runs out of work or is stopped. Only events from the grpc::CompletionQueue will be handled. That means that completion handler that were e.g. created using asio::post(grpc_context, ...) will not be processed. The GrpcContext will be brought into the ready state when this function is invoked. Upon return, the GrpcContext will be in the stopped state.

+
Attention
Only one thread may call run_completion_queue() or poll_completion_queue() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run, run_until, run_while and poll (since 3.2.0)].
+
Returns
True if at least one event has been processed.
+ +
+
+ +

◆ poll()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::poll ()
+
+inline
+
+ +

Poll ready completion handlers and grpc::CompletionQueue

+

Processes all ready completion handlers and ready events of the grpc::CompletionQueue. The GrpcContext will be brought into the ready state when this function is invoked.

+
Attention
Only one thread may call run(), run_until(), run_while() or poll() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run_completion_queue() or poll_completion_queue() (since 3.2.0)].
+
Returns
True if at least one operation has been processed.
+ +
+
+ +

◆ poll_completion_queue()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::poll_completion_queue ()
+
+inline
+
+ +

Poll the grpc::CompletionQueue

+

Processes only ready events of the grpc::CompletionQueue. That means that completion handler that were e.g. created using asio::post(grpc_context, ...) will not be processed. The GrpcContext will be brought into the ready state when this function is invoked.

+
Attention
Only one thread may call run_completion_queue() or poll_completion_queue() at a time [unless this context has been constructed with a concurrency_hint greater than one. Even then it may not be called concurrently with run, run_until, run_while and poll (since 3.2.0)].
+
Returns
True if at least one operation has been processed.
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::GrpcContext::stop ()
+
+inline
+
+ +

Signal the GrpcContext to stop.

+

Causes a call to run() to return as soon as possible.

+

Thread-safe with regards to other functions except the destructor.

+ +
+
+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::GrpcContext::reset ()
+
+inlinenoexcept
+
+ +

Bring a stopped GrpcContext back into the ready state.

+

When a call to run() or stop() returns, the GrpcContext will be in a stopped state. This function brings the GrpcContext back into the ready state.

+

Thread-safe with regards to other functions except the destructor.

+ +
+
+ +

◆ is_stopped()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::GrpcContext::is_stopped () const
+
+inlinenodiscardnoexcept
+
+ +

Is the GrpcContext in the stopped state?

+

Thread-safe

+ +
+
+ +

◆ get_executor()

+ +
+
+ + + + + +
+ + + + + + + +
GrpcContext::executor_type agrpc::GrpcContext::get_executor ()
+
+inlinenodiscardnoexcept
+
+ +

Get the associated executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+ + + + + +
+ + + + + + + +
GrpcContext::executor_type agrpc::GrpcContext::get_scheduler ()
+
+inlinenodiscardnoexcept
+
+ +

Get the associated scheduler.

+

Thread-safe

+ +
+
+ +

◆ get_allocator()

+ +
+
+ + + + + +
+ + + + + + + +
GrpcContext::allocator_type agrpc::GrpcContext::get_allocator ()
+
+inlinenodiscardnoexcept
+
+ +

Get the associated allocator.

+
Attention
The returned allocator may only be used for allocations/deallocations within the same thread(s) that calls run*()/poll*().
+

Thread-safe

+ +
+
+ +

◆ work_started()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::GrpcContext::work_started ()
+
+inlinenoexcept
+
+ +

Signal that work has started.

+

The GrpcContext maintains an internal counter on how many operations have been started. Once that counter reaches zero it will go into the stopped state. Every call to work_started() should be matched to a call of work_finished().

+

Thread-safe

+ +
+
+ +

◆ work_finished()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::GrpcContext::work_finished ()
+
+inlinenoexcept
+
+ +

Signal that work has finished.

+

Thread-safe

+ +
+
+ +

◆ get_completion_queue()

+ +
+
+ + + + + +
+ + + + + + + +
grpc::CompletionQueue * agrpc::GrpcContext::get_completion_queue ()
+
+inlinenodiscardnoexcept
+
+ +

Get the underlying grpc::CompletionQueue

+

Do not use any functions of the returned CompletionQueue that might interfere with the GrpcContext, like Next().

+

Do not delete the returned pointer.

+

Thread-safe, never nullptr

+ +
+
+ +

◆ get_server_completion_queue()

+ +
+
+ + + + + +
+ + + + + + + +
grpc::ServerCompletionQueue * agrpc::GrpcContext::get_server_completion_queue ()
+
+inlinenodiscardnoexcept
+
+ +

Get the underlying grpc::CompletionQueue

+

Do not use any functions of the returned CompletionQueue that might interfere with the GrpcContext, like Next().

+

Do not delete the returned pointer.

+
Attention
Only valid if the GrpcContext has been constructed with a ServerCompletionQueue:
grpc::ServerBuilder builder;
+
agrpc::GrpcContext grpc_context{builder.AddCompletionQueue()};
+
+

Thread-safe, never nullptr

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_grpc_context.js b/docs/classagrpc_1_1_grpc_context.js new file mode 100644 index 00000000..83627daf --- /dev/null +++ b/docs/classagrpc_1_1_grpc_context.js @@ -0,0 +1,26 @@ +var classagrpc_1_1_grpc_context = +[ + [ "executor_type", "classagrpc_1_1_grpc_context.html#a72c65827092d85b2ce6376524e35141c", null ], + [ "allocator_type", "classagrpc_1_1_grpc_context.html#a3445ceeb54e332eabf163cc6afdc1e3d", null ], + [ "GrpcContext", "classagrpc_1_1_grpc_context.html#a1a957251b8d9b75795e0669039176301", null ], + [ "GrpcContext", "classagrpc_1_1_grpc_context.html#ab52eca52fa3fce99a8a688f3e3ed561e", null ], + [ "GrpcContext", "classagrpc_1_1_grpc_context.html#a2d955d0f205cf08dd3d0b84867702c9d", null ], + [ "GrpcContext", "classagrpc_1_1_grpc_context.html#a8944c1140241c842dd29c9e691820c10", null ], + [ "~GrpcContext", "classagrpc_1_1_grpc_context.html#ad54076bc77ee6db3f167b2ad073db171", null ], + [ "run", "classagrpc_1_1_grpc_context.html#acb1dae170b054aba4c83e266c456fee0", null ], + [ "run_until", "classagrpc_1_1_grpc_context.html#af6615f2abd46956145dcfe88e69f4004", null ], + [ "run_while", "classagrpc_1_1_grpc_context.html#a21dc3e81f8d5c11969add93a7a24e363", null ], + [ "run_completion_queue", "classagrpc_1_1_grpc_context.html#a627dcc6bc3401d204d976b6fea6e00a3", null ], + [ "poll", "classagrpc_1_1_grpc_context.html#a4eb77d4c7fe553bc7b8aa7bc0c73fc22", null ], + [ "poll_completion_queue", "classagrpc_1_1_grpc_context.html#af35c5d430df1d778320a2fe51ec40102", null ], + [ "stop", "classagrpc_1_1_grpc_context.html#aee29d403f03ef487d22efdf2079c46bc", null ], + [ "reset", "classagrpc_1_1_grpc_context.html#a9da2b2b94e92a9d46e1309209002784b", null ], + [ "is_stopped", "classagrpc_1_1_grpc_context.html#af71bfc1a827acb00e275161f189ea151", null ], + [ "get_executor", "classagrpc_1_1_grpc_context.html#ab82f48f7e09542f242b683cda49aa6a9", null ], + [ "get_scheduler", "classagrpc_1_1_grpc_context.html#add171728b45fddd5740e4a3c9549bd3b", null ], + [ "get_allocator", "classagrpc_1_1_grpc_context.html#ab38d929d30e72aface90b3d429727d33", null ], + [ "work_started", "classagrpc_1_1_grpc_context.html#ada19710c265c3a1e9cbffb696d079fbb", null ], + [ "work_finished", "classagrpc_1_1_grpc_context.html#a9f89631518b2d38dbe0be11f7d5a4cc6", null ], + [ "get_completion_queue", "classagrpc_1_1_grpc_context.html#a897a9de9af8a2b81bbeef2f7fe0d0c63", null ], + [ "get_server_completion_queue", "classagrpc_1_1_grpc_context.html#a43be219d02581b5959b120bc9f869fce", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_health_check_service-members.html b/docs/classagrpc_1_1_health_check_service-members.html new file mode 100644 index 00000000..f75ad6be --- /dev/null +++ b/docs/classagrpc_1_1_health_check_service-members.html @@ -0,0 +1,130 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::HealthCheckService Member List
+
+
+ +

This is the complete list of members for agrpc::HealthCheckService, including all inherited members.

+ + + + + + + +
add_health_check_service(grpc::ServerBuilder &builder)agrpc::HealthCheckServicerelated
SetServingStatus(const std::string &service_name, bool serving)agrpc::HealthCheckServiceinline
SetServingStatus(bool serving)agrpc::HealthCheckServiceinline
Shutdown()agrpc::HealthCheckServiceinline
start_health_check_service(agrpc::HealthCheckService &service, agrpc::GrpcContext &grpc_context)agrpc::HealthCheckServicerelated
start_health_check_service(grpc::Server &server, agrpc::GrpcContext &grpc_context)agrpc::HealthCheckServicerelated
+
+ + + + diff --git a/docs/classagrpc_1_1_health_check_service.html b/docs/classagrpc_1_1_health_check_service.html new file mode 100644 index 00000000..6e02cd78 --- /dev/null +++ b/docs/classagrpc_1_1_health_check_service.html @@ -0,0 +1,363 @@ + + + + + + + + +asio-grpc: agrpc::HealthCheckService Class Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::HealthCheckService Class Referencefinal
+
+
+ +

CompletionQueue-based implementation of grpc::HealthCheckServiceInterface. + More...

+ +

#include <agrpc/health_check_service.hpp>

+ + + + + + + + + + + +

+Public Member Functions

void SetServingStatus (const std::string &service_name, bool serving)
 Set or change the serving status of the given service_name.
 
void SetServingStatus (bool serving)
 Apply a serving status to all registered service names.
 
void Shutdown ()
 Set all registered service names to not serving and prevent future state changes.
 
+ + + + + + + + + + + +

+Related Symbols

(Note that these are not member symbols.)

+
grpc::ServerBuilder & add_health_check_service (grpc::ServerBuilder &builder)
 Add a HealthCheckService to a grpc::Server
 
void start_health_check_service (agrpc::HealthCheckService &service, agrpc::GrpcContext &grpc_context)
 Start a previously added HealthCheckService.
 
void start_health_check_service (grpc::Server &server, agrpc::GrpcContext &grpc_context)
 Start a previously added HealthCheckService (grpc::Server overload)
 
+

Detailed Description

+

CompletionQueue-based implementation of grpc::HealthCheckServiceInterface.

+

This class is a drop-in replacement for the grpc::DefaultHealthCheckService. It should be added to a grpc::ServerBuilder using add_health_check_service().

+

Motivation: grpc::DefaultHealthCheckService is implemented in terms of gRPC's generic callback API. Mixing callback services and CompletionQueue-based services in one grpc::Server significantly degrades performance.

+
Note
In order to use this class you must compile and link with health.proto. If your compiler does not support __has_include then you must also include health.grpc.pb.h before including agrpc/health_check_service.hpp.
+
Since
2.3.0
+

Member Function Documentation

+ +

◆ SetServingStatus() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void agrpc::HealthCheckService::SetServingStatus (const std::string & service_name,
bool serving )
+
+inline
+
+ +

Set or change the serving status of the given service_name.

+

Thread-safe

+ +
+
+ +

◆ SetServingStatus() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::HealthCheckService::SetServingStatus (bool serving)
+
+inline
+
+ +

Apply a serving status to all registered service names.

+

Thread-safe

+ +
+
+ +

◆ Shutdown()

+ +
+
+ + + + + +
+ + + + + + + +
void agrpc::HealthCheckService::Shutdown ()
+
+inline
+
+ +

Set all registered service names to not serving and prevent future state changes.

+

Thread-safe

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ add_health_check_service()

+ +
+
+ + + + + +
+ + + + + + + +
grpc::ServerBuilder & add_health_check_service (grpc::ServerBuilder & builder)
+
+related
+
+ +

Add a HealthCheckService to a grpc::Server

+

Must be called before grpc::ServerBuilder.BuildAndStart() and the service must be started using start_health_check_service() afterwards. May only be called once for a given ServerBuilder.

+

Example:

+
std::unique_ptr<grpc::Server> server;
+
grpc::ServerBuilder builder;
+
agrpc::GrpcContext grpc_context{builder.AddCompletionQueue()};
+
agrpc::add_health_check_service(builder);
+
server = builder.BuildAndStart();
+
agrpc::start_health_check_service(*server, grpc_context);
+
Since
2.3.0
+ +
+
+ +

◆ start_health_check_service() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void start_health_check_service (agrpc::HealthCheckService & service,
agrpc::GrpcContext & grpc_context )
+
+related
+
+ +

Start a previously added HealthCheckService.

+

Must be called after grpc::ServerBuilder.BuildAndStart(). The service must have been added using add_health_check_service(). May only be called once for a given HealthCheckService.

+

Does not contribute to the work tracking of the GrpcContext.

+
Attention
May not be called concurrently with GrpcContext::run/poll. May not be used with a multi-threaded GrpcContext.
+
Note
When using GrpcContext::run/poll_completion_queue then none of the member functions of the service may be used.
+
Since
2.3.0
+ +
+
+ +

◆ start_health_check_service() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void start_health_check_service (grpc::Server & server,
agrpc::GrpcContext & grpc_context )
+
+related
+
+ +

Start a previously added HealthCheckService (grpc::Server overload)

+

The service must have been added using add_health_check_service(). May only be called once for a given HealthCheckService.

+

Effectively performs:

+
auto* service = static_cast<agrpc::HealthCheckService*>(server.GetHealthCheckService());
+
agrpc::start_health_check_service(*service, grpc_context);
+
CompletionQueue-based implementation of grpc::HealthCheckServiceInterface.
Definition health_check_service.hpp:56
+
Since
2.3.0
+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_health_check_service.js b/docs/classagrpc_1_1_health_check_service.js new file mode 100644 index 00000000..a5454802 --- /dev/null +++ b/docs/classagrpc_1_1_health_check_service.js @@ -0,0 +1,9 @@ +var classagrpc_1_1_health_check_service = +[ + [ "SetServingStatus", "classagrpc_1_1_health_check_service.html#a38397dcd756e5356973bddabe68b8ef7", null ], + [ "SetServingStatus", "classagrpc_1_1_health_check_service.html#a326d63fafa352ab8b2457545c46c5a34", null ], + [ "Shutdown", "classagrpc_1_1_health_check_service.html#aa48421a22334257415189455ce4200b7", null ], + [ "add_health_check_service", "classagrpc_1_1_health_check_service.html#a886bd0e1412d8fc13ca2a5959aab07fb", null ], + [ "start_health_check_service", "classagrpc_1_1_health_check_service.html#a7a1da8eae5be01bec3a8f6a8be75932f", null ], + [ "start_health_check_service", "classagrpc_1_1_health_check_service.html#a55f352e270845728106e5dd3da20e668", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_server_r_p_c.html b/docs/classagrpc_1_1_server_r_p_c.html new file mode 100644 index 00000000..3f265e88 --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c.html @@ -0,0 +1,136 @@ + + + + + + + + +asio-grpc: agrpc::ServerRPC< RequestRPC, Traits, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ServerRPC< RequestRPC, Traits, Executor > Class Template Reference
+
+
+ +

Primary ServerRPC template. + More...

+

Detailed Description

+
template<auto RequestRPC, class Traits = agrpc::DefaultServerRPCTraits, class Executor = agrpc::BasicGrpcExecutor<>>
+class agrpc::ServerRPC< RequestRPC, Traits, Executor >

Primary ServerRPC template.

+

This is the main entrypoint for implementing asynchronous gRPC servers.

+
See also
agrpc::ServerRPC<RequestUnary,TraitsT,Executor>
+ agrpc::ServerRPC<RequestClientStreaming,TraitsT,Executor>
+ agrpc::ServerRPC<RequestServerStreaming,TraitsT,Executor>
+ agrpc::ServerRPC<RequestBidiStreaming,TraitsT,Executor>
+ agrpc::ServerRPC<agrpc::ServerRPCType::GENERIC,TraitsT,Executor>
+
+
Since
2.7.0
+
+
+ + + + diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4-members.html b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4-members.html new file mode 100644 index 00000000..ad4436d6 --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4-members.html @@ -0,0 +1,147 @@ + + + + + + + + +asio-grpc: Member List + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ServerRPCContextBase< Responder >inline
context()agrpc::detail::ServerRPCContextBase< Responder >inline
context() constagrpc::detail::ServerRPCContextBase< Responder >inline
executor_type typedefagrpc::detail::RPCExecutorBase< Executor >
finish(const grpc::Status &status, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
is_done() const noexceptagrpc::detail::ServerRPCNotifyWhenDoneMixin< TraitsT::NOTIFY_WHEN_DONE, ResponderT< ResponseT, RequestT >, Executor >inline
method_name() noexceptagrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >inlinestatic
Ptr typedefagrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >
read(RequestT &req, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
Request typedefagrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >
Response typedefagrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >
send_initial_metadata(CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})agrpc::detail::ServerRPCBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
ServerRPC()=deleteagrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >
service_name() noexceptagrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >inlinestatic
Traits typedefagrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >
TYPEagrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >static
wait_for_done(CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})agrpc::detail::ServerRPCNotifyWhenDoneMixin< TraitsT::NOTIFY_WHEN_DONE, ResponderT< ResponseT, RequestT >, Executor >inline
write(const ResponseT &response, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
write(const ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
write_and_finish(const ResponseT &response, grpc::WriteOptions options, const grpc::Status &status, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
write_and_finish(const ResponseT &response, const grpc::Status &status, CompletionToken &&token=CompletionToken{})agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >inline
+
+ + + + diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html new file mode 100644 index 00000000..1795cefa --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html @@ -0,0 +1,799 @@ + + + + + + + + +asio-grpc: agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor > Class Template Reference + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
asio-grpc v3.2.1 +
+
Asynchronous gRPC with Asio/unified executors
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor > Class Template Reference
+
+
+ +

I/O object for server-side, bidirectional-streaming rpcs. + More...

+ +

#include <agrpc/server_rpc.hpp>

+
+ + Inheritance diagram for agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >:
+
+
+ +
+ + Collaboration diagram for agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >:
+
+
+ + + + + + +

+Classes

struct  rebind_executor
 Rebind the ServerRPC to another executor. More...
 
+ + + + + + + + + + + + + + + + +

+Public Types

+using Ptr = agrpc::ServerRPCPtr<ServerRPC>
 ServerRPCPtr specialized on this type.
 
+using Request = RequestT
 The response message type.
 
+using Response = ResponseT
 The request message type.
 
+using Traits = TraitsT
 The traits type.
 
+using executor_type = Executor
 The executor type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ServerRPC ()=delete
 Deleted default constructor.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto read (RequestT &req, CompletionToken &&token=CompletionToken{})
 Receive a message from the client.
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const ResponseT &response, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})
 Send a message to the client.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write (const ResponseT &response, CompletionToken &&token=CompletionToken{})
 Send a message to the client (default WriteOptions)
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write_and_finish (const ResponseT &response, grpc::WriteOptions options, const grpc::Status &status, CompletionToken &&token=CompletionToken{})
 Coalesce write and finish of this rpc.
 
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto write_and_finish (const ResponseT &response, const grpc::Status &status, CompletionToken &&token=CompletionToken{})
 Coalesce write and finish of this rpc (default WriteOptions)
 
template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
auto finish (const grpc::Status &status, CompletionToken &&token=CompletionToken{})
 Finish this rpc.
 
auto send_initial_metadata (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
 Send initial metadata.
 
bool is_done () const noexcept
 Is this rpc done?
 
auto wait_for_done (CompletionToken &&token=detail::DefaultCompletionTokenT< Executor >{})
 Wait for done.
 
const executor_typeget_executor () const noexcept
 Get the executor.
 
const executor_typeget_scheduler () const noexcept
 Get the scheduler.
 
+auto & context ()
 Get the underlying ServerContext
 
+const auto & context () const
 Get the underlying ServerContext (const overload)
 
void cancel () noexcept
 Cancel this RPC.
 
+ + + + + + + +

+Static Public Member Functions

static constexpr std::string_view service_name () noexcept
 Name of the gRPC service.
 
static constexpr std::string_view method_name () noexcept
 Name of the gRPC method.
 
+ + + + +

+Static Public Attributes

+static constexpr agrpc::ServerRPCType TYPE = agrpc::ServerRPCType::BIDIRECTIONAL_STREAMING
 The rpc type.
 
+

Detailed Description

+
template<class ServiceT, class RequestT, class ResponseT, detail::ServerBidiStreamingRequest< ServiceT, RequestT, ResponseT > RequestBidiStreaming, class TraitsT, class Executor>
+class agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >

I/O object for server-side, bidirectional-streaming rpcs.

+

Use one of the agrpc::register_ functions to set up request handling.

+

Example:

+
void server_rpc_bidirectional_streaming(agrpc::GrpcContext& grpc_context,
+
example::v1::Example::AsyncService& service)
+
{
+
using RPC = asio::use_awaitable_t<>::as_default_on_t<agrpc::ServerRPC<
+
&example::v1::Example::AsyncService::RequestBidirectionalStreaming>>;
+ +
grpc_context, service,
+
[](RPC& rpc) -> asio::awaitable<void>
+
{
+
RPC::Request request;
+
RPC::Response response;
+
while (co_await rpc.read(request))
+
{
+
response.set_integer(request.integer());
+
if (!co_await rpc.write(response))
+
{
+
co_return;
+
}
+
}
+
response.set_integer(42);
+
co_await rpc.write(response, grpc::WriteOptions{}.set_last_message());
+
co_await rpc.finish(grpc::Status::OK);
+
},
+
asio::detached);
+
}
+

Based on .proto file:

+
syntax = "proto3";
+
+
package example.v1;
+
+
service Example {
+
rpc ServerStreaming(Request) returns (stream Response) {}
+
+
rpc ClientStreaming(stream Request) returns (Response) {}
+
+
rpc BidirectionalStreaming(stream Request) returns (stream Response) {}
+
+
rpc Unary(Request) returns (Response) {}
+
}
+
+
message Request {
+
int32 integer = 1;
+
}
+
+
message Response {
+
int32 integer = 1;
+
}
+
Template Parameters
+ + + + +
RequestUnaryA pointer to the generated gRPC method.
TraitsA type used to customize this rpc. See agrpc::DefaultServerRPCTraits.
ExecutorThe executor type, must be capable of referring to a GrpcContext.
+
+
+

Per-Operation Cancellation

+

(except wait_for_done()) Terminal and partial. Cancellation is performed by invoking grpc::ServerContext::TryCancel. After successful cancellation no further operations should be started on the rpc. Operations are also cancelled when the deadline of the rpc has been reached.

+
Since
2.7.0
+

Member Function Documentation

+ +

◆ service_name()

+ +
+
+
+template<class ServiceT , class RequestT , class ResponseT , detail::ServerBidiStreamingRequest< ServiceT, RequestT, ResponseT > RequestBidiStreaming, class TraitsT , class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >::service_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC service.

+

Equal to the generated Service::service_full_name().

+

E.g. for the .proto schema

+
package example.v1;
+
+
service Example { ... }
+

the return value would be "example.v1.Example".

+ +
+
+ +

◆ method_name()

+ +
+
+
+template<class ServiceT , class RequestT , class ResponseT , detail::ServerBidiStreamingRequest< ServiceT, RequestT, ResponseT > RequestBidiStreaming, class TraitsT , class Executor >
+ + + + + +
+ + + + + + + +
static constexpr std::string_view agrpc::ServerRPC< RequestBidiStreaming, TraitsT, Executor >::method_name ()
+
+inlinestaticconstexprnoexcept
+
+ +

Name of the gRPC method.

+

E.g. for agrpc::ServerRPC<&example::Example::AsyncService::RequestMyMethod> the return value would be "MyMethod".

+ +
+
+ +

◆ read()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class TraitsT , class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >::read (RequestT & req,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Receive a message from the client.

+

May not be called currently with finish()/write_and_finish(). It is not meaningful to call it concurrently with another read on the same rpc since reads on the same stream are delivered in order.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true indicates that a valid message was read. false when there will be no more incoming messages, either because the other side has called WritesDone() or the stream has failed (or been cancelled).
+
+
+ +
+
+ +

◆ write()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class TraitsT , class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + +
auto agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >::write (const ResponseT & response,
grpc::WriteOptions options,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Send a message to the client.

+

Only one write may be outstanding at any given time. It may not be called concurrently with operations other than read().

+

GRPC does not take ownership or a reference to response, so it is safe to to deallocate once write() returns, unless a deferred completion token like agrpc::use_sender or asio::deferred is used.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data/metadata/status/etc is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ write_and_finish()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class TraitsT , class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
auto agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >::write_and_finish (const ResponseT & response,
grpc::WriteOptions options,
const grpc::Status & status,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Coalesce write and finish of this rpc.

+

Write response and coalesce it with trailing metadata which contains status, using WriteOptions options. May not be used concurrently with other operations.

+

write_and_finish is equivalent of performing write with WriteOptions.set_last_message() and finish in a single step.

+

GRPC does not take ownership or a reference to response and status, so it is safe to deallocate once write_and_finish() returns, unless a deferred completion token like agrpc::use_sender or asio::deferred is used.

+

Implicit input parameter:

+
    +
  • The ServerContext associated with the call is used for sending trailing (and initial) metadata to the client.
  • +
+
Note
Status must have an OK code.
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data/metadata/status/etc is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ finish()

+ +
+
+
+template<class RequestT , class ResponseT , template< class, class > class ResponderT, class TraitsT , class Executor >
+
+template<class CompletionToken = detail::DefaultCompletionTokenT<Executor>>
+ + + + + +
+ + + + + + + + + + + +
auto agrpc::detail::ServerRPCBidiStreamingBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >::finish (const grpc::Status & status,
CompletionToken && token = CompletionToken{} )
+
+inlineinherited
+
+ +

Finish this rpc.

+

Indicate that the stream is to be finished with a certain status code.

+

Completes when the server has sent the appropriate signals to the client to end the call.

+

Should not be used concurrently with other operations and may only be called once.

+

It is appropriate to call this method when either:

+
    +
  • all messages from the client have been received (either known implicitly, or explicitly because a previous read operation completed with false).
  • +
  • it is desired to end the call early with some non-OK status code.
  • +
+

This operation will end when the server has finished sending out initial metadata (if not sent already) and status, or if some failure occurred when trying to do so.

+

GRPC does not take ownership or a reference to status, so it is safe to to deallocate once finish() returns, unless a deferred completion token like agrpc::use_sender or asio::deferred is used.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data/metadata/status/etc is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ send_initial_metadata()

+ +
+
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ServerRPCBase< ResponderT< ResponseT, RequestT >, TraitsT, Executor >::send_initial_metadata (CompletionToken && token = detail::DefaultCompletionTokenT<Executor>{})
+
+inlineinherited
+
+ +

Send initial metadata.

+

Request notification of the sending of initial metadata to the client.

+

This call is optional, but if it is used, it cannot be used concurrently with or after the finish()/finish_with_error() method.

+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void(bool). true means that the data/metadata/status/etc is going to go to the wire. If it is false, it is not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
+
+
+ +
+
+ +

◆ is_done()

+ +
+
+ + + + + +
+ + + + + + + +
bool agrpc::detail::ServerRPCNotifyWhenDoneMixin< IsNotifyWhenDone, ResponderT< ResponseT, RequestT >, Executor >::is_done () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Is this rpc done?

+

Only available if Traits contain NOTIFY_WHEN_DONE = true.

+

Returns true if NotifyWhenDone has fired which indicates that finish() has been called or that the rpc is dead (i.e., canceled, deadline expired, other side dropped the channel, etc).

+

Thread-safe

+ +
+
+ +

◆ wait_for_done()

+ +
+
+ + + + + +
+ + + + + + + +
auto agrpc::detail::ServerRPCNotifyWhenDoneMixin< IsNotifyWhenDone, ResponderT< ResponseT, RequestT >, Executor >::wait_for_done (CompletionToken && token = detail::DefaultCompletionTokenT<Executor>{})
+
+inlineinherited
+
+ +

Wait for done.

+

Only available if Traits contain NOTIFY_WHEN_DONE = true.

+

Request notification of the completion of this rpc, either due to calling finish() or because the rpc is dead (i.e., canceled, deadline expired, other side dropped the channel, etc). rpc.context().IsCancelled() may only be called after this operation completes.

+

Cancelling this operation does not invoke grpc::ServerContext::TryCancel.

+

Internally, this operation uses grpc::ServerContext::AsyncNotifyWhenDone.

+
Attention
Only one call to wait_for_done() may be outstanding at a time.
+
Parameters
+ + +
tokenA completion token like asio::yield_context or agrpc::use_sender. The completion signature is void().
+
+
+ +
+
+ +

◆ get_executor()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_executor () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the executor.

+

Thread-safe

+ +
+
+ +

◆ get_scheduler()

+ +
+
+
+template<class Executor >
+ + + + + +
+ + + + + + + +
const executor_type & agrpc::detail::RPCExecutorBase< Executor >::get_scheduler () const
+
+inlinenodiscardnoexceptinherited
+
+ +

Get the scheduler.

+

Thread-safe

+
Since
2.9.0
+ +
+
+ +

◆ cancel()

+ +
+
+
+template<class Responder >
+ + + + + +
+ + + + + + + +
void agrpc::detail::ServerRPCContextBase< Responder >::cancel ()
+
+inlinenoexceptinherited
+
+ +

Cancel this RPC.

+

Effectively calls context().TryCancel().

+

Thread-safe

+ +
+
+
+
+ + + + diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.js b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.js new file mode 100644 index 00000000..77b9c507 --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.js @@ -0,0 +1,27 @@ +var classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4 = +[ + [ "rebind_executor", "structagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor.html", "structagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4_1_1rebind__executor" ], + [ "Ptr", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a482df6736133eb6cfabf930cc8e7db49", null ], + [ "Request", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#af85c5d0f47f0b6e6244efd65a2dedbd6", null ], + [ "Response", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#ab8caf2b42da62017857e5f8d3b830353", null ], + [ "Traits", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a6497720ecb8d23c3b31fccee67f51a10", null ], + [ "executor_type", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#afe3aab926de22d76fdb5e0d347c5d8c4", null ], + [ "ServerRPC", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a5b78d65f5628c9eaf4a521399a7ab0ba", null ], + [ "service_name", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#ab0c6dea77cb83891df6a5be872075877", null ], + [ "method_name", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a91d048483317e75723c7edf507011245", null ], + [ "read", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a150a96890cdc34ca0ea8980ee33df2ec", null ], + [ "write", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a078d5b4d7735cb5557cdeadb52fd8c02", null ], + [ "write", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a24a943e21a084ebb38c1e3f42810d145", null ], + [ "write_and_finish", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#adeecd7e5bda6de28ad8e09933c8cd8b8", null ], + [ "write_and_finish", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a333763a4595ed96f57915d8ba8c747d5", null ], + [ "finish", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a06bd50403d88fa57b48a7e25f6ffdaf1", null ], + [ "send_initial_metadata", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a2476f3477572b896d89f6ac21cb59928", null ], + [ "is_done", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a42255cc87cf854a4d2bc04315f7647d5", null ], + [ "wait_for_done", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a8ac96d7413a2fd8465136d9815acca24", null ], + [ "get_executor", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#ac7d45c8fc3141d17881ac99ba0b53034", null ], + [ "get_scheduler", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#ac5e0d6c42c0ed62b84b90f3ce42e180a", null ], + [ "context", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#acb7e79a9709696570ffd10a42a3ed8a7", null ], + [ "context", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#aa0a8fef49ce793e900442392882a488d", null ], + [ "cancel", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#ad8085a81b22c9af295c206f2f8c3af26", null ], + [ "TYPE", "classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4.html#a54e3bd847fd4509a223660588413c69f", null ] +]; \ No newline at end of file diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map new file mode 100644 index 00000000..a1556da2 --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 new file mode 100644 index 00000000..96dc26db --- /dev/null +++ b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.md5 @@ -0,0 +1 @@ +82d9914188d69815ff38f20a4fee06c0 \ No newline at end of file diff --git a/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.png b/docs/classagrpc_1_1_server_r_p_c_3_01_request_bidi_streaming_00_01_traits_t_00_01_executor_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..79a013a11940ffcad0913e185f4a018da539c2db GIT binary patch literal 37539 zcmb?@cRZKv`?pFODip~mMRpNMkmhNgTXVIm?MX7Z zT(5j0KdJ5N#o8xT9i2(buXdR{V|=||;MJ>qUVCZs5+6!($*-^X*$ls? zq5-|{cuZ^y@k`{1^Y>nqtrXew|YtbfB4s?ff(_W(prq$pGaf!r$wbe0Em0*w zysW%DC^~v2{~Hal)V(3BA|lJ)65cWajP)-sKNas>CYM@1w9bd0$wJv@Ot+JKbJxb& ztV;Za`wOK_{1d7HzP`tJc*bnbC-na1?$TjkU~ri1VmN#D?9j&;nJ7VX@uYkIJwZ2D zGYbp*p%w-^JG+e%d)j-i3@aRb8=kXlS`Qz1C`uO5Fc;uAYQT+-!lDDxA4Z^ z^z?MM_4y7)mMz!#B`K4D>W ze}5JyJ56;rnhDCi_n~1M`Bj?h&=q~=wvWI6!0J>@hpds7yKY%79?q##r;G<1gKR8l zYdL+NKUcAdQY;xT9Y03B)6ZgkWxn8fws-H;^`+@PhpFzkeTPMFy0v_Md0F7>S+F3!R-z{(w2V>9DIC%j~lzzJ4xeOO(!|DH?&QH1y!7tfySp=kP0zER^x7O}Wqrt@6kXXSfJg6{X1_4f z=8dX4?Kq~XsHnJe*Dj)ruGM&~#|>87#v{aDi6uj$xX`5{q*~_ljWDxy7kdH@OarI`mHWy>0hjJX^f{dLgKHssZ=cM8l7|u-n{l4@;ojktuo9xFPUx zmTnu=-K(_}JwqpEI<0wR5h?X=@)e zZw~*n^lw1uPS>Fe7cLYO6r2(k9_q|Djf{*ub#LP8*tbm1rf1KdnV|sR)z`P-mQod? z9>&KXIcw8x_Vtw-aYKG|ya#_g>1aztZCo}oV&Uh{W$mD4U}!@BL7Bg8YYW1I(a1NE zTA1qjgsW+6YO4MCaqj~>UK(cRYe{>*=Nf$~wD=Tx=61L|Q^psU@$cD+F~R}11Mjzd z&Nr2LA9z^d-n|mNI4@RVVL?Gw)XDnlqDF;-rQG|(i{2yOvzd%Mmj5s{hsvBd#K
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor > Member List
+
+
+ +

This is the complete list of members for agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
cancel() noexceptagrpc::detail::ClientRPCContextBase< ResponderT< RequestT > >inline
ClientRPCBase(agrpc::GrpcContext &grpc_context)agrpc::detail::ClientRPCBase< ResponderT< RequestT >, Executor >inlineexplicit
ClientRPCBase(agrpc::GrpcContext &grpc_context, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT >, Executor >inline
ClientRPCBase(const Executor &executor)agrpc::detail::ClientRPCBase< ResponderT< RequestT >, Executor >inlineexplicit
ClientRPCBase(const Executor &executor, ClientContextInitFunction &&init_function)agrpc::detail::ClientRPCBase< ResponderT< RequestT >, Executor >inline
context()agrpc::detail::ClientRPCContextBase< ResponderT< RequestT > >inline
context() constagrpc::detail::ClientRPCContextBase< ResponderT< RequestT > >inline
executor_type typedefagrpc::detail::RPCExecutorBase< Executor >
finish(CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inline
get_executor() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
get_scheduler() const noexceptagrpc::detail::RPCExecutorBase< Executor >inline
method_name() noexceptagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inlinestatic
read_initial_metadata(CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inline
Request typedefagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >
Response typedefagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >
service_name() noexceptagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inlinestatic
start(StubT &stub, ResponseT &response, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inline
Stub typedefagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >
TYPEagrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >static
write(const RequestT &request, grpc::WriteOptions options, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inline
write(const RequestT &request, CompletionToken &&token=CompletionToken{})agrpc::ClientRPC< PrepareAsyncClientStreaming, Executor >inline
+