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();
  };
};