15.5 OADとのIDLインタフェース
OADはVisiBroker ORBオブジェクトとしてインプリメントされており,クライアントプログラムがOADにバインドして,登録されたオブジェクトの状態を照会するためにインタフェースを使用できるようにしています。IDLサンプル15-6に,OADのIDLインタフェース定義を示します。
- IDLサンプル15-6 OADインタフェース定義
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(); }; };