CORBA_boolean CDR_put_string(CDR_Codec *codec, const char *str) { unsigned int len; len=strlen(str)+1; if (CDR_put_ulong(codec, len)==CORBA_FALSE) return -1; return CDR_buffer_puts(codec, str, len); }
int RTPSAckCreate(CDR_Codec *cdrCodec, SequenceNumber *seqNumber, ObjectId roid, ObjectId woid, Boolean f_bit) { SequenceNumber sn_tmp; CDR_Endianness data_endian; CORBA_octet flags; if (cdrCodec->buf_len < cdrCodec->wptr+28) return -1; /* submessage id */ CDR_put_octet(cdrCodec, ACK); /* 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; SeqNumberInc(sn_tmp, *seqNumber); /* SeqNumber */ CDR_put_ulong(cdrCodec, sn_tmp.high); CDR_put_ulong(cdrCodec, sn_tmp.low); /* bitmap - bits */ CDR_put_ulong(cdrCodec, 32); CDR_put_ulong(cdrCodec, 0); return 28; }