Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}