-RTPSHeardBeatCreate(uint8_t *rtps_msg,uint32_t max_msg_len,
- SequenceNumber *firstSeqNumber,SequenceNumber *lastSeqNumber,
- ObjectId woid,ObjectId roid,Boolean f_bit) {
- if (max_msg_len<28) return -1;
- rtps_msg[0]=(uint8_t)HEARTBEAT;
- rtps_msg[1]=ORTE_MY_MBO;
- if (f_bit) rtps_msg[1]|=2;
- *((ParameterLength*)(rtps_msg+2))=24;
- conv_u32(&roid,0);
- *((ObjectId*)(rtps_msg+4))=roid;
- conv_u32(&woid,0);
- *((ObjectId*)(rtps_msg+8))=woid;
- *((SequenceNumber*)(rtps_msg+12))=*firstSeqNumber;
- *((SequenceNumber*)(rtps_msg+20))=*lastSeqNumber;
+RTPSHeartBeatCreate(CDR_Codec *cdrCodec,
+ SequenceNumber *fsn,SequenceNumber *lsn,
+ ObjectId roid,ObjectId woid,Boolean f_bit)
+{
+ CDR_Endianness data_endian;
+ CORBA_octet flags;
+
+ if (cdrCodec->buf_len<cdrCodec->wptr+28) return -1;
+
+ /* submessage id */
+ CDR_put_octet(cdrCodec,HEARTBEAT);
+
+ /* flags */
+ flags=cdrCodec->data_endian;
+ if (f_bit) flags|=2;
+ CDR_put_octet(cdrCodec,flags);
+
+ /* length */
+ CDR_put_ushort(cdrCodec,24);
+
+ /* next data are sent in big endianing */
+ data_endian=cdrCodec->data_endian;
+ cdrCodec->data_endian=FLAG_BIG_ENDIAN;
+
+ /* readerObjectId */
+ CDR_put_ulong(cdrCodec,roid);
+
+ /* writerObjectId */
+ CDR_put_ulong(cdrCodec,woid);
+
+ cdrCodec->data_endian=data_endian;
+
+ /* firstSeqNumber */
+ CDR_put_ulong(cdrCodec,fsn->high);
+ CDR_put_ulong(cdrCodec,fsn->low);
+
+ /* lastSeqNumber */
+ CDR_put_ulong(cdrCodec,lsn->high);
+ CDR_put_ulong(cdrCodec,lsn->low);
+