关于CORBA sequence的用法

CORBA sequence用于客户端与服务器批量数据的传递,使用类似数组

示例定义:

	module AService //! 服务名
	{
		struct A        //! 定长结构
		{
			long lA;
			long lA1;
		}
		typedef sequence<A> ASeq;

		struct B    //! 变长结构
		{
			long lB1;
			string lB2;
		}
		typedef sequence<B> BSeq;
	}


sequence的根据模板类型不同,IDL编译后,产生两种类型,分别是 定长与变长,例子中产生的分别是

//! 生成的定长序列
  class ASeq;
  
  typedef
    TAO_FixedSeq_Var_T<        //! 定长
        ASeq,
        A
      >
    ASeq_var;
  
  typedef
    TAO_Seq_Out_T<
        ASeq,
        ASeq_var,
        ADB
      >
    ASeq_out;
  
  class  ASeq : public TAO_Unbounded_Sequence<A>
{
   //! ....;
};
//! 生成的变长序列
  class BSeq;
  
  typedef
    TAO_VarSeq_Var_T<                 //! 变长
        BSeq,
        B
      >
    BSeq_var;
  
  typedef
    TAO_Seq_Out_T<
        BSeq,
        BSeq_var,
        B
      >
    CirculationDataDBSeq_out;
  
  class  BSeq : public TAO_Unbounded_Sequence<B>
{
    //! ...;
}


 
 

变长var与定长var的访问方法 是不同的

   ASeq_var tempAs;
   tempAs[i].lA = 1;
   
   BSeq_var tempBs;
   (*tempBs)[i].lB = 1;

 

2  用法: 服务端开辟相应的内存空间,客户端负责释放

服务端开辟空间:   
ASeq_out res = new ASeq;
res->length(Size);
客户端使用后 释放
 BSeq_var res;
 res->length(0);


 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值