假如要在系統內的交互一個二進制數據,忽略大小端;可以將數據定義如下
sequence<octet, 255> payload
通過from_array賦值,通過get_contiguous_buffer獲取buffer。
目前已知存在如果二進制定義中間存在0,會導致後續數據爲0.
1 idl 2 struct message_com { 3 ... 4 sequence<octet, 255> payload; 5 }; 6 7 struct com_info { 8 float x; 9 float y; 10 float z; 11 }; 12 /* Send message */ 13 com_info info = {0}; 14 message_com msg = {0}; 15 16 DDS_Long len = sizeof(info); 17 msg.payload.maximum(len); 18 msg.payload.length(len); 19 20 msg.payload.from_array((CDR_Octet *)&info, len); 21 22
23 24 /* Recv message */ 25 com_info info = {0}; 26 memcpy(&info, massage.payload.get_contiguous_buffer(), sizeof(tInfo)); 27