Предположим, что сообщение, которое мне нужно отправить с сервера на клиент, выглядит следующим образом:
message BatchReply {
bytes data = 1;
repeated int32 shape = 2;
string dtype = 3;
repeated int64 labels = 4;
}
Здесь shape
/ dtype
- это только небольшие переменные, которые могут быть представлены с небольшим интервалом int, data
/ labels
- это большие буферы памяти, которые могут занимать до 1 ГБ памяти.
Я пытаюсь отправить это сообщение с помощью потока:
service ImageService {
rpc get_batch (BatchRequest) returns (stream BatchReply) {}
}
Мой вопрос заключается в том, что примеры, которые я могу найти для отправки сообщения через поток, касаются только сообщений с одним полем в сообщении. struct, например:
service TransferFile {
rpc Upload(stream Chunk) returns (Reply) {}
}
message Chunk {
bytes buffer = 1; // here is only on field of buffer, what if there is a field of int val = 2; ?
}
Что если в структуре Chunk
есть два поля. Нужно ли мне звонить set_val()
каждый раз, когда я звоню set_buffer()
во время того же процесса подачи потока?