es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

protocol-buffers: enviar múltiples mensajes del mismo tipo

Por ejemplo, definí el siguiente mensaje de respuesta en el archivo proto:

syntax = "proto3";

message MyRequest {
   int32 id = 1;
}

message MyReply {
   int32 id = 1;
   int32 group = 2;
   string name = 3;
}

...

¿Cómo puedo indicar en el archivo .proto que MyReply puede ser recibido múltiples veces, es decir, si hay varios objetos que se pueden enviar juntos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para indicar que MyReply puede ser recibido varias veces, se necesita agregar la palabra clave repeated a la definición del mensaje. Esto indica que puede haber cero o más instancias del mensaje en la carga útil devuelta.

    La definición actualizada del mensaje MyReply en el archivo .proto se vería así:

    syntax = "proto3";
    
    message MyRequest {
       int32 id = 1;
    }
    
    message MyReply {
       int32 id = 1;
       int32 group = 2;
       string name = 3;
    }
    
    message MyReplyList {
       repeated MyReply myreply = 1;
    }
    

    Aquí, se define un nuevo mensaje llamado MyReplyList con un campo repeated de tipo MyReply. Esto indica que se pueden enviar múltiples instancias de MyReply juntas.

    Ahora, el mensaje de respuesta se puede definir como un MyReplyList en lugar de un MyReply:

    service MyService {
        rpc MyMethod (MyRequest) returns (MyReplyList) {}
    }
    

    Este MyMethod ahora puede devolver múltiples instancias de MyReply en una lista.

Comments are closed.