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

第9章 ネーミングサービスのプログラミング

9.3 バインディングアイテレータインタフェース

 バインディングアイテレータインタフェースは、listオペレーションで処理されなかったバインディングの一覧を獲得するためのインタフェースを提供します。

  interface BindingIterator {
    boolean next_one(out Binding b);
    boolean next_n(in unsigned long how_many,
          out BindingList bl);
    void destroy();
  }
 next_one
 next_oneオペレーションは、listや以前に呼び出されたnext_n, next_oneによりまだ返却されていない次のバインディングを返します。オペレーションがバインディングを返している場合には、復帰値としてtrueを返します。すべてのバインディングが処理された後のnext_oneオペレーションでは、falseを返します。next_oneがfalseを返した場合、バインディングの値は不定となるため参照してはいけません。
 falseを返した後に、さらにnext_oneを呼び出した場合、OBJECT_NOT_EXISTシステム例外が発生します。
 next_n
 next_nは、listや以前に呼び出されたnext_n, next_oneによりまだ返却されていないバインディングをパラメタbl中に返します。blが0でない長さのシーケンスの場合、trueが返ります。next_nは、すべてのバインディングが回収された時に一度だけ長さ0のパラメタblと復帰値としてfalseを返します。
 falseを返した後に、さらにnext_oneを呼び出した場合、OBJECT_NOT_EXISTシステム例外が発生します。
 ネーミングサービスは、クライアントから要求されたhow_manyパラメタの個数を上限としたバインディングを返します。how_manyで指定された値が、nsconfigファイルのbl_how_manyパラメタで設定されている最大バインディング数よりも大きい場合には、ネーミングサービスはbl_how_manyパラメタで指定された値のバインディングを返します。
 how_manyに0が指定された場合には、BAD_PARAMシステム例外が発生します。
 destroy
 destroyオペレーションは、このバインディングアイテレータを破壊します。クライアントがdestroyを呼び出した後に何らかのオペレーションを呼び出した場合、オペレーションはOBJECT_NOT_EXISTシステム例外を返します。
 listオペレーションによりバインディングアイテレータを作成し、destroyオペレーションを呼び出さないクライアントは、資源を継続して使用することになります。バインディングアイテレータが返されたクライアントは、責任をもってこのバインディングアイテレータをlistオペレーションにより削除する必要があります。
 ネーミングサービスの標準規約では、destroyされないバインディングアイテレータのために資源が継続して使用されることを防ぐために、ネーミングサービスは警告なしで、いつでもアイテレータオブジェクトを破壊することが可能です。ポータビリティが高いクライアントアプリケーションの作成にあたっては、バインディングアイテレータが破壊され、OBJECT_NOT_EXISTシステム例外が発生することを想定する必要があります。

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

All Rights Reserved, Copyright(C) 富士通株式会社 2005