ネームコンポーネントのIDLを以下に示します。
struct NameComponent { Istring id; Istring kind; };
ネームコンポーネントは、ネーミングコンテキストにオブジェクトリファレンスを登録する際に、オブジェクトリファレンスと関連付けされてネーミングコンテキストに登録されます。
ネームコンポーネントは、idフィールドとkindフィールドで構成されます。それぞれのフィールドは文字列で表され、長さが0("")も許されます。idフィールドとkindフィールドの使い分けに関する規則は、特にありません。利用者が自由に使い分けることができます。
2つのネームコンポーネントが同一であるためには、idとkindの両方のフィールドが一致している必要があります。
構造体型のバインディング名のIDLを以下に示します。
typedef sequence <NameComponent> Name;
構造体型のバインディング名は、ネームコンポーネントのシーケンス型です。
階層構造の複数のネーミングコンテキストにまたがったオペレーションをネーミングサービスに要求するために、ネーミングサービスのオペレーションの呼出しには、バインディング名を指定して行います。
1つだけのネームコンポーネントで構成されているバインディング名を単純名、複数のネームコンポーネントで構成されているバインディング名をコンパウンド名と呼びます。
上記の例で、ルートネーミングコンテキストに対して要求を行う際に、オブジェクト_Cを示す構造体型バインディング名は以下のようになります。
index | id | kind | 備考 |
---|---|---|---|
1 | "コンテキスト_A" | "" | ネームコンポーネント |
2 | "オブジェクト_C" | "" | ネームコンポーネント |
ネーミングコンテキストに登録されるバインディングは、コンテキストタイプ/オブジェクトタイプのバインディングタイプを持ちます。コンパウンド名で指定される最後のネームコンポーネント以外のネームコンポーネントは、コンテキストタイプのバインディングである必要があります。
bind、rebindで作成されたバインディングのバインディングタイプは、オブジェクトタイプです。bind_context、rebind_context、bind_new_contextで作成されたバインディングのバインディングタイプは、コンテキストタイプとなります。
バインディング、バインディングリストのIDLを以下に示します。
enum BindingType {nobject, ncontext}; struct Binding { Name binding_name; BindingType binding_type; }; typedef sequence <Binding> BindingList;
バインディングとバインディングリストは、ネーミングコンテキストに登録されているバインディングの一覧を獲得する場合に返されるバインディング情報を格納するデータ型です。
バインディングはバインディング名とバインディングタイプから構成され、1つのバインディング情報が格納されます。バインディングは、BindingIterator::next_oneオペレーションから返されます。
バインディングリストは、複数のバインディング情報を格納するためのデータ型で、バインディングのシーケンス型です。バインディングリストは、NamingContext::list、およびBindingIterator::next_nオペレーションから返されます。