OADはVisiBroker ORBオブジェクトとしてインプリメントされており,クライアントプログラムがOADにバインドして,登録されたオブジェクトの状態を照会するためにインタフェースを使用できるようにしています。IDLサンプル15-6に,OADのIDLインタフェース定義を示します。
module Activation
{
enum State {
ACTIVE,
INACTIVE,
WAITING_FOR_ACTIVATION
};
struct ObjectStatus {
long unique_id;
State activation_state;
Object objRef;
};
typedef sequence<ObjectStatus> ObjectStatusList;
struct ImplementationStatus {
extension::CreationImplDef impl;
ObjectStatusList status;
};
typedef sequence<ImplementationStatus> ImplStatusList;
exception DuplicateEntry {};
exception InvalidPath {};
exception NotRegistered {};
exception FailedToExecute {};
exception NotResponding {};
exception IsActive {};
exception Busy {};
interface OAD {
Object reg_implementation(
in extension::CreationImplDef impl)
raises (DuplicateEntry, InvalidPath);
extension::CreationImplDef get_implementation(
in CORBA::RepositoryId repId,
in string object_name)
raises ( NotRegistered);
void change_implementation(
in extension::CreationImplDef old_info,
in extension::CreationImplDef new_info)
raises (NotRegistered,InvalidPath,IsActive);
attribute boolean destroy_on_unregister;
void unreg_implementation(in CORBA::RepositoryId repId,
in string object_name)
raises ( NotRegistered );
void unreg_interface(in CORBA::RepositoryId repId)
raises ( NotRegistered );
void unregister_all();
ImplementationStatus get_status(
in CORBA::RepositoryId repId,
in string object_name)
raises ( NotRegistered );
ImplStatusList get_status_interface(
in CORBA::RepositoryId repId)
raises (NotRegistered);
ImplStatusList get_status_all();
};
};