main.cpp 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include <iostream>
  2. #include <grpc++/grpc++.h>
  3. #include "addressbook.pb.h"
  4. #include "addressbook.grpc.pb.h"
  5. class AddressBookService final : public qtprotobuf::examples::AddressBook::Service {
  6. ::qtprotobuf::examples::Contacts m_contacts;
  7. public:
  8. AddressBookService() {
  9. std::cout << "getContacts called" << std::endl;
  10. ::qtprotobuf::examples::Contact* contact = m_contacts.add_list();
  11. contact->set_firstname("John");
  12. contact->set_lastname("Doe");
  13. contact = m_contacts.add_list();
  14. contact->set_firstname("Jane");
  15. contact->set_lastname("Doe");
  16. contact = m_contacts.add_list();
  17. contact->set_firstname("John");
  18. contact->set_lastname("McClane");
  19. contact = m_contacts.add_list();
  20. contact->set_firstname("Alexey");
  21. contact->set_lastname("Edelev");
  22. contact = m_contacts.add_list();
  23. contact->set_firstname("Ebenezer");
  24. contact->set_lastname("Scrooge");
  25. ::qtprotobuf::examples::Job *job = new ::qtprotobuf::examples::Job;
  26. job->set_title("Job title");
  27. contact->set_allocated_job(job);
  28. ::qtprotobuf::examples::PhoneNumber home;
  29. home.set_countrycode(49);
  30. home.set_number(12324534679);
  31. (*contact->mutable_phones())[::qtprotobuf::examples::Contact::Home] = home;
  32. }
  33. ~AddressBookService() {}
  34. ::grpc::Status addContact(::grpc::ServerContext* context, const ::qtprotobuf::examples::Contact* request, ::qtprotobuf::examples::Contacts* response) override
  35. {
  36. std::cout << "addContact called" << std::endl;
  37. ::qtprotobuf::examples::Contact* newContact = m_contacts.add_list();
  38. *newContact = *request;
  39. *response = m_contacts;
  40. return ::grpc::Status();
  41. }
  42. ::grpc::Status removeContact(::grpc::ServerContext* context, const ::qtprotobuf::examples::Contact* request, ::qtprotobuf::examples::Contacts* response) override
  43. {
  44. std::cout << "removeContact called" << std::endl;
  45. return ::grpc::Status(::grpc::UNIMPLEMENTED, "Unimplemented");
  46. }
  47. ::grpc::Status getContacts(::grpc::ServerContext* context, const ::qtprotobuf::examples::ListFrame* request, ::qtprotobuf::examples::Contacts* response) override
  48. {
  49. *response = m_contacts;
  50. return ::grpc::Status();
  51. }
  52. ::grpc::Status makeCall(::grpc::ServerContext* context, const ::qtprotobuf::examples::Contact* request, ::qtprotobuf::examples::SimpleResult* response) override
  53. {
  54. std::cout << "makeCall called" << std::endl;
  55. return ::grpc::Status(::grpc::UNIMPLEMENTED, "Unimplemented");
  56. }
  57. ::grpc::Status navigateTo(::grpc::ServerContext* context, const ::qtprotobuf::examples::Address* request, ::qtprotobuf::examples::SimpleResult* response) override
  58. {
  59. std::cout << "navigateTo called" << std::endl;
  60. return ::grpc::Status(::grpc::UNIMPLEMENTED, "Unimplemented");
  61. }
  62. };
  63. int main(int argc, char *argv[])
  64. {
  65. std::string server_address("localhost:65001");
  66. AddressBookService service;
  67. grpc::ServerBuilder builder;
  68. builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
  69. builder.RegisterService(&service);
  70. std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
  71. std::cout << "Server listening on " << server_address << std::endl;
  72. server->Wait();
  73. }