Protocol buffers protobuf C+中的二维数组+;
我有一个如下的结构,它包含一些二维数组Protocol buffers protobuf C+中的二维数组+;,protocol-buffers,Protocol Buffers,我有一个如下的结构,它包含一些二维数组 typedef struct _MsgPixelDataHistory { int is_initialized; unsigned int user_id;; int pen; int start; int quanta_count[MAX_RETRANS]; int x[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];
typedef struct _MsgPixelDataHistory {
int is_initialized;
unsigned int user_id;;
int pen;
int start;
int quanta_count[MAX_RETRANS];
int x[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];
int y[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];
}MsgPixelDataHistory;
我定义的相应protobuf结构如下
message x_his {
repeated int32 xh=1;
}
message y_his {
repeated int32 yh=1;
}
message PixelDataHis {
int32 start=1;
bool pen=2;
repeated x_his x=3;
repeated y_his y=4;
}
现在我已经编写了如下所示的写和读函数,但它似乎没有正确初始化数组。size函数的readback返回1。
正确的读写方法是什么
写
PixelDataHis有效载荷;
int i,j;
有效载荷。设置启动(d->start);
有效载荷。设置笔(d->pen);
x_他的*x_发送;
你是他送的;
对于(j=0;jadd_xh(d->x[j][i]);
y_send->add_yh(d->y[j][i]);
x_send->set_xh(i,d->x[j][i]);
y_send->set_yh(i,d->y[j][i]);
}
}
std::string serializedData=payload.SerializeAsString();
阅读
payload.ParseFromString(缓冲区);
dr->dataType=PX;
dr->grpcError=0;
dr->dr.dph.pen=payload.pen();
dr->dr.dph.start=payload.start();
对于(j=0;jdr.dph.quanta_count[j]=payload.x_size();
常数x_his&xhis=有效载荷x(j);
常数y_his&yhis=有效载荷y(j);
对于(i=0;idr.dph.x[j][i]=xhis.xh(i);;
}
对于(i=0;idr.dph.y[j][i]=yhis.yh(i);
}
}
PixelDataHis payload ;
int i,j;
payload.set_start(d->start);
payload.set_pen(d->pen);
x_his* x_send;
y_his* y_send;
for(j=0;j<MAX_RETRANS;j++){
x_send=payload.add_x();
y_send=payload.add_y();
for(i=0;i<d->quanta_count[j];i++){
x_send->add_xh(d->x[j][i]);
y_send->add_yh(d->y[j][i]);
x_send->set_xh(i,d->x[j][i]);
y_send->set_yh(i,d->y[j][i]);
}
}
std::string serializedData = payload.SerializeAsString();
payload.ParseFromString(buffer);
dr->dataType=PX;
dr->grpcError=0;
dr->dr.dph.pen=payload.pen();
dr->dr.dph.start=payload.start();
for(j=0;j<payload.x_size();j++){
dr->dr.dph.quanta_count[j]=payload.x_size();
const x_his& xhis = payload.x(j);
const y_his& yhis = payload.y(j);
for(i=0;i<xhis.xh_size();i++){
dr->dr.dph.x[j][i]=xhis.xh(i);;
}
for(i=0;i<yhis.yh_size();i++){
dr->dr.dph.y[j][i]=yhis.yh(i);
}
}