@@ -86,15 +86,29 @@ class GreeterClient {
8686
8787 co_return co_await promise ([&] (promise::resolve_t resolve, promise::reject_t ) -> void {
8888 try {
89- this ->stub_ ->async ()->SayHello (&context, &request, &reply, [&, resolve = std::move (resolve)] (grpc::Status status) {
90- if (status.ok ()) {
91- resolve (reply.message ());
92- return ;
89+ this ->stub_ ->async ()->SayHello (&context, &request, &reply, [ctx = manapi::async::current (), &reply, resolve = std::move (resolve)] (grpc::Status status) {
90+ if (manapi::async::context_exists ()) {
91+ if (status.ok ()) {
92+ resolve (reply.message ());
93+ return ;
94+ }
95+
96+ auto msg = status.error_message ();
97+ manapi_log_debug (" grpc client failed due to %s" , msg.data ());
98+ resolve (manapi::error::status_internal (" grpc client: something gets wrong" ));
99+ }
100+ else {
101+ ctx->eventloop ()->custom_callback ([resolve = std::move (resolve), status = std::move (status), &reply] (manapi::event_loop *ev) -> void {
102+ if (status.ok ()) {
103+ resolve (reply.message ());
104+ return ;
105+ }
106+
107+ auto msg = status.error_message ();
108+ manapi_log_debug (" grpc client failed due to %s" , msg.data ());
109+ resolve (manapi::error::status_internal (" grpc client: something gets wrong" ));
110+ }).unwrap ();
93111 }
94-
95- auto msg = status.error_message ();
96- manapi_log_debug (" grpc client failed due to %s" , msg.data ());
97- resolve (manapi::error::status_internal (" grpc client: something gets wrong" ));
98112 });
99113 }
100114 catch (std::exception const &e) {
@@ -110,12 +124,6 @@ class GreeterClient {
110124
111125
112126int main () {
113- try {
114- manapi::init_tools::log_trace_init ((manapi::debug::trace_level)std::stoi (manapi::process::get_env (" MANAPIHTTP_LOGTRACE" ).unwrap ()));
115- }
116- catch (...) {
117- manapi::init_tools::log_trace_init (manapi::debug::LOG_TRACE_LOW);
118- }
119127 int threads = 4 ;
120128 try { threads = std::stoi (manapi::process::get_env (" MANAPIHTTP_THREADS" ).unwrap ()); }
121129 catch (...) { }
@@ -170,11 +178,51 @@ int main () {
170178 co_return ;
171179 }
172180 auto greeter = std::make_shared<GreeterClient>(grpc::CreateChannel (" localhost:8080" , creds.unwrap ()));
173- manapi::async::current ()->timerpool ()->append_interval_async (10 , [greeter] (const manapi::timer &t) -> manapi::future<> {
174- std::string user = " Xiadnoring Client" ;
181+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
182+ std::string user = " Xiadnoring Client #1" ;
183+ auto res = co_await greeter->SayHello (user);
184+ if (res.ok ())
185+ std::cout << " Xiadnoring Client#1 =" << res.unwrap () << " \n " ;
186+ else
187+ res.err ().log ();
188+ });
189+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
190+ std::string user = " Xiadnoring Client #2" ;
191+ auto res = co_await greeter->SayHello (user);
192+ if (res.ok ())
193+ std::cout << " Xiadnoring Client #2=" << res.unwrap () << " \n " ;
194+ else
195+ res.err ().log ();
196+ });
197+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
198+ std::string user = " Xiadnoring Client #3" ;
199+ auto res = co_await greeter->SayHello (user);
200+ if (res.ok ())
201+ std::cout << " Xiadnoring Client #3=" << res.unwrap () << " \n " ;
202+ else
203+ res.err ().log ();
204+ });
205+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
206+ std::string user = " Xiadnoring Client #4" ;
207+ auto res = co_await greeter->SayHello (user);
208+ if (res.ok ())
209+ std::cout << " Xiadnoring Client #4=" << res.unwrap () << " \n " ;
210+ else
211+ res.err ().log ();
212+ });
213+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
214+ std::string user = " Xiadnoring Client #5" ;
215+ auto res = co_await greeter->SayHello (user);
216+ if (res.ok ())
217+ std::cout << " Xiadnoring Client #5=" << res.unwrap () << " \n " ;
218+ else
219+ res.err ().log ();
220+ });
221+ manapi::async::current ()->timerpool ()->append_interval_async (100 , [greeter] (const manapi::timer &t) -> manapi::future<> {
222+ std::string user = " Xiadnoring Client #6" ;
175223 auto res = co_await greeter->SayHello (user);
176224 if (res.ok ())
177- std::cout << res.unwrap () << " \n " ;
225+ std::cout << " Xiadnoring Client #6= " << res.unwrap () << " \n " ;
178226 else
179227 res.err ().log ();
180228 });
0 commit comments