Я пытаюсь проанализировать сообщение protobuf, но если у меня есть вложенные сообщения, синтаксический анализ не выполняется.
Программа, отправляющая сообщение, использует dotnet-protobufs. Когда я вызываю IsInitialized для сообщения, это нормально. Когда я просматриваю версию ToString () перед отправкой по сети, она выглядит правильно.
Когда я получаю его на стороне клиента (c ++), анализ не выполняется. Если я делаю ParsePartialFromString, а затем .DebugString (), вложенные сообщения не построены должным образом. Я получаю что-то вроде этого:
command: NEW
nested_message {
0: 0x727568541b121d0a
14 {
}
}
Я знаю, что это не принципиальная проблема, потому что, когда я делаю это с одного и того же клиента и сервера с не вложенным сообщением, все работает нормально. Это что-то особенное для вложения.
Я пытался погуглить, но безрезультатно. Любая помощь?
Редактировать :
Это код, делающий создание объекта. Я вызываю ToString () для объекта и отправляю его по проводам.
private Request createRequestString()
{
Request.Types.ClientDetails clientDetails = Request.Types.ClientDetails.CreateBuilder()
.SetClientTimestamp(DateTime.Now.ToLongDateString())
.Build();
Request.Types.Details details = Request.Types.Details.CreateBuilder()
.SetType(Request.Types.Details.Types.Types.NORMAL)
.SetCurrency("CND")
.SetDate(DateTime.Now.ToLongDateString())
.Build();
Request.Types.NewRequest newrequest = Request.Types.NewRequest.CreateBuilder()
.SetClientDetails(clientDetails)
.SetDetails(details)
.Build();
Request request = Request.CreateBuilder()
.SetCommand(Request.Types.Commands.NEW)
.SetNewRequest(newrequest)
.Build();
bool isClientGood = clientDetails.IsInitialized;
bool isDetailGood = details.IsInitialized;
bool isNewRequestGood = newrequest.IsInitialized;
bool isAllGood = request.IsInitialized;
return request;
}