Hi Christian, thanks for your response.
Am Freitag, 12. Oktober 2018 11:53:21 UTC+2 schrieb Christian Rivasseau: > > > 1: It is indeed very much possible to have multiple methods, you just need > to arrange for your own CallData object that will > handle different methods. Depending on your style you could: > - Have a enum in the CallData constructor that describe which method is > handled, and switch on that. > - Use inheritance (have a CallData subclass for each GRPC method). > - Takes functors that perform the work as arguments. > OK, this is pretty much what I did already. My problem is, at which point do I know which method is called? Let me use that modified HandleRpcs() example to explain: Suppose I went for your second choice and have a type per call. void MyServerImpl::HandleRpcs() { // Spawn a new CallData instance for each method. Is that right? new MyFirstMethod(&m_service_instance, m_cq.get()); new MySecondMethod(&m_service_instance, m_cq.get()); void* tag; // uniquely identifies a request. bool ok; while (true) { // Block waiting to read the next event from the completion queue. The // event is uniquely identified by its tag, which in this case is the // memory address of a CallData instance. // The return value of Next should always be checked. This return value // tells us whether there is any kind of event or cq_ is shutting down. if (!m_cq->Next(&tag, &ok)) break; MOOSE_ASSERT(ok); // This here: // How do I know which call it is? To which type do I cast this tag void ptr? The first or the second? static_cast<MyFirstMethod *>(tag)->proceed(); } } > Then when your server starts you will need to instantiate the first > CallData object for each method. > > 2: The example is indeed synchronous in its process phase. In real life > you will be offloading work to some thread pool, > or calling async services of your own, and then you can call > responder_->Finish() once that is done. > OK, so my separate io_context approach will provide that just fine. Thanks! Stephan -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To post to this group, send email to grpc-io@googlegroups.com. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/89d54d5c-af86-4a17-8e13-3446bc286aa0%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.