mardi 21 juillet 2020

How to iterate a protobuffer repeatedfield inside a grpc service?

Should I have a mutable reference to the field, I would be able to use:

enum my_types{
  type_unknown = 0;
  type_one = 1;
  tpye_two = 2;
}
message My_message{
  repeated my_types lotsa_types = 1;
}
message My_response{
  //whatever
}

service My_service{
  rpc my_rpc(My_message) returns (My_response) {}
}
::grpc::Status My_server::my_rpc(
  ::grpc::ServerContext* context, const ::my_namespace::My_message* request,
  ::my_namespace::My_reply* response
){
  std::cout << "Recieved numbers";
  for(my_types& single_number: *request->mutable_lotsa_types()){
    std::cout << " " << single_number << " ";
  }
  std::cout << std::endl;
}

but I can not, because request is given by a const modifier via the grpc service call:

error: passing ‘const my_namespace::My_message’ as ‘this’ argument discards qualifiers [-fpermissive]

How can the const RepeatedFiled be iterated over?

Aucun commentaire:

Enregistrer un commentaire