Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C++言語)> 5.5 データ型に対するマッピング

5.5.13 any型、sequence型のリリースフラグ

 可変長データは、データをクライアントへ返却後、スケルトン中で自動的に解放します。
 そのため、解放したくないデータについては、そのデータをどこか別の領域に複写しておく必要があります。文字列(string)を例に説明します。

 しかし、any、sequenceのような複雑な型の場合には、コピーする処理が複雑なため、リリースフラを設定し、解放する/しないを設定できるようになっています。
 リリースフラグの設定方法について以下に示します。

変数型

設定方法

any

コンストラクタまたはreplaceメソッドを使用。デフォルトはCORBA_FALSE (注)

例)
CORBA::Any_ptr p = new CORBA::Any(_typecode, value, CORBA_TRUE);
CORBA::Any_ptr p = new CORBA::Any;
p->replace( _typecode, value, CORBA_TRUE );

sequence

コンストラクタを使用。デフォルトはCORBA_FALSE (注)

例)
struct sample {
    string  para1;
    long    para2;
};
typedef sequence<sample> data;
−>
sample_var *p = sample::allocbuf(2);
data *q = new data( 2, 2, p, CORBA_TRUE );
 (2,2はそれぞれmaximum, length)

注) CORBA_TRUEのとき解放されます。CORBA_FALSEのときは解放されません。


目次 索引 前ページ次ページ

Copyright 2006 FUJITSU LIMITED