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

第10章 インタフェースリポジトリサービスのプログラミング> 10.3 インタフェースリポジトリサービスインタフェース

10.3.1 インタフェースリポジトリサービスが提供するインタフェース

  module CORBA{
      interface IRObject; 
      interface Contained    : IRObject{};
      interface Container    : IRObject{};
      interface IDLType      : IRObject{};
      interface Repository   : Container{};
      interface ModuleDef    : Container, Contained{};
      interface ConstantDef  : Contained{};
      interface TypedefDef   : Contained, IDLType{};
      interface StructDef    : TypedefDef{};
      interface UnionDef     : TypedefDef{};
      interface EnumDef      : TypedefDef{};
      interface AliasDef     : TypedefDef{};
      interface PrimitiveDef : IDLType{};
      interface StringDef    : IDLType{};
      interface WstringDef   : IDLType{};
      interface SequenceDef  : IDLType{};
      interface ArrayDef     : IDLType{};
      interface FixedDef     : IDLType{};
      interface ExceptionDef : Contained{};
      interface AttributeDef : Contained{};
      interface OperationDef : Contained{};
      interface InterfaceDef : Contained, Container, IDLType{};
   // interface TypeCode; 

      typedef string    Identifier; 
      typedef string    ScopedName; 
      typedef string    RepositoryId; 

      enum DefinitionKind{
          dk_none,dk_all,dk_Attribute,dk_Constant,dk_Exception, 
          dk_Interface,dk_Module,dk_Operation,dk_Typedef, 
          dk_Alias,dk_Struct,dk_Union,dk_Enum,dk_Primitive, 
          dk_String,dk_Sequence,dk_Array,dk_Repository,
        dk_Wstring,dk_Fixed
      };

      interface IRObject{
          // read interface
          readonly attribute DefinitionKind   def_kind; 

          // write interface
          void destroy();
      };

      typedef string    VersionSpec; 

      interface Contained; 
      interface Repository; 
      interface Container; 
   // interface TypeCode; 

      interface Contained:IRObject{
          // read/write interface
          attribute RepositoryId      id; 
          attribute Identifier        name; 
          attribute VersionSpec       version; 

          // read interface
          readonly attribute Container         defined_in; 
          readonly attribute ScopedName        absolute_name; 
          readonly attribute Repository        containing_repository; 
    
          struct Description{
              DefinitionKind    kind; 
              any               value; 
          };
  
          Description describe();

          // write interface
          void move(
              in Container       new_container, 
              in Identifier      new_name, 
              in VersionSpec     new_version
          ); 
      };

      interface ModuleDef; 
      interface ConstantDef; 
      interface IDLType; 
      interface StructDef; 
      interface UnionDef; 
      interface EnumDef; 
      interface AliasDef; 
      interface InterfaceDef; 
      interface ExceptionDef; 

      typedef sequence<InterfaceDef>InterfaceDefSeq; 

      typedef sequence<Contained>ContainedSeq; 

      struct StructMember{
          Identifier name; 
          TypeCode   type; 
          IDLType    type_def; 
      };

      typedef sequence<StructMember>StructMemberSeq; 

      struct UnionMember{
          Identifier name; 
          any        label; 
          TypeCode   type; 
          IDLType    type_def; 
      };

      typedef sequence<UnionMember>UnionMemberSeq; 

      typedef sequence<Identifier>EnumMemberSeq; 

      interface Container:IRObject{
          // read interface

          Contained lookup(in ScopedName search_name); 

          ContainedSeq contents(
              in DefinitionKind   limit_type, 
              in boolean          exclude_inherited
          ); 

          ContainedSeq lookup_name(
              in Identifier       search_name, 
              in long             levels_to_search, 
              in DefinitionKind   limit_type, 
              in boolean          exclude_inherited
          ); 

          struct Description{
              Contained           contained_object; 
              DefinitionKind      kind; 
              any                 value; 
         }; 

          typedef sequence<Description>DescriptionSeq; 

          DescriptionSeq describe_contents(
              in DefinitionKind   limit_type, 
              in boolean          exclude_inherited, 
              in long             max_returned_objs
          ); 
      
          // write interface

          ModuleDef create_module(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version
          ); 
  
          ConstantDef create_constant(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in IDLType          type, 
              in any              value
          ); 

          ExceptionDef create_exception(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in StructMemberSeq  members
          ); 

          StructDef create_struct(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in StructMemberSeq  members
          ); 

          UnionDef create_union(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in IDLType          discriminator_type, 
              in UnionMemberSeq   members
          ); 

          EnumDef create_enum(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in EnumMemberSeq    members
          ); 

          AliasDef create_alias(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in IDLType          original_type
          ); 

          InterfaceDef create_interface(
              in RepositoryId     id, 
              in Identifier       name, 
              in VersionSpec      version, 
              in InterfaceDefSeq  base_interfaces
          ); 
      };

      interface IDLType:IRObject{
          readonly attribute TypeCode type; 
      };

      enum PrimitiveKind{
          pk_null,pk_void,pk_short,pk_long,pk_ushort,pk_ulong, 
          pk_float,pk_double,pk_boolean,pk_char,pk_octet, 
          pk_any,pk_TypeCode,pk_Principal,pk_string,pk_objref,
          pk_longlong,pk_ulonglong,pk_longdouble,pk_wchar,pk_wstring
      };

      interface PrimitiveDef; 
      interface StringDef; 
      interface WstringDef;
      interface SequenceDef; 
      interface ArrayDef; 
      interface FixedDef;
      interface Repository:Container{

          // read interface
          Contained lookup_id(in RepositoryId search_id); 
          PrimitiveDef get_primitive(in PrimitiveKind kind); 

          // write interface
          StringDef create_string(in unsigned long bound); 

          WstringDef create_wstring(in unsigned long bound);

          SequenceDef create_sequence(
              in unsigned long bound, 
              in IDLType element_type
          ); 

          ArrayDef create_array(
              in unsigned long length, 
              in IDLType element_type
          ); 

          FixedDef create_fixed(
              in unsigned short digits, 
              in short scale
          );

          void load();
          void destroy_rep();
      };

      interface ModuleDef:Container,Contained{
      };

      struct ModuleDescription{
          Identifier         name; 
          RepositoryId       id; 
          RepositoryId       defined_in; 
          VersionSpec        version; 
      };

      interface ConstantDef:Contained{
          readonly attribute TypeCode type; 
                   attribute IDLType  type_def; 
                   attribute any      value; 
      };

      struct ConstantDescription{
          Identifier         name; 
          RepositoryId       id; 
          RepositoryId       defined_in; 
          VersionSpec        version; 
          TypeCode           type; 
          any                value; 
      };

      interface TypedefDef:Contained,IDLType{
      };

      struct TypeDescription{
          Identifier         name; 
          RepositoryId       id; 
          RepositoryId       defined_in; 
          VersionSpec        version; 
          TypeCode           type; 
       };

      interface StructDef:TypedefDef{
                   attribute StructMemberSeq members; 
      };

      interface UnionDef:TypedefDef{
          readonly attribute TypeCode discriminator_type; 
                   attribute IDLType  discriminator_type_def; 
                   attribute UnionMemberSeq members; 
      };

      interface EnumDef:TypedefDef{
                   attribute EnumMemberSeq members; 
      };
      
      interface AliasDef:TypedefDef{
                   attribute IDLType original_type_def; 
      };
      
      interface PrimitiveDef:IDLType{
          readonly attribute PrimitiveKind kind; 
      };
      
      interface StringDef:IDLType{
                   attribute unsigned long bound; 
      };
   
      interface WstringDef:IDLType{
                   attribute unsigned long bound;
      };

      interface SequenceDef:IDLType{
                   attribute unsigned long bound; 
          readonly attribute TypeCode element_type; 
                   attribute IDLType  element_type_def; 
      };
      
      interface ArrayDef:IDLType{
                   attribute unsigned long length; 
          readonly attribute TypeCode element_type; 
                   attribute IDLType  element_type_def; 
      };
      
      interface ExceptionDef:Contained{
          readonly attribute TypeCode type; 
                   attribute StructMemberSeq members; 
      };

      struct ExceptionDescription{
          Identifier      name; 
          RepositoryId    id; 
          RepositoryId    defined_in; 
          VersionSpec     version; 
          TypeCode        type; 
      };

      enum AttributeMode{ATTR_NORMAL,ATTR_READONLY};

      interface AttributeDef:Contained{
          readonly attribute TypeCode type; 
                   attribute IDLType  type_def; 
                   attribute AttributeMode mode; 
      };

      struct AttributeDescription{
          Identifier      name; 
          RepositoryId    id; 
          RepositoryId    defined_in; 
          VersionSpec     version; 
          TypeCode        type; 
          AttributeMode   mode; 
      };

      enum OperationMode{OP_NORMAL,OP_ONEWAY};
   
      enum ParameterMode{PARAM_IN,PARAM_OUT,PARAM_INOUT};

      struct ParameterDescription{
          Identifier      name; 
          TypeCode        type; 
          IDLType         type_def; 
          ParameterMode   mode; 
      };
      
      typedef sequence<ParameterDescription>ParDescriptionSeq; 
      typedef Identifier ContextIdentifier; 
      typedef sequence<ContextIdentifier>ContextIdSeq; 
      
      typedef sequence<ExceptionDef>ExceptionDefSeq; 
      typedef sequence<ExceptionDescription>ExcDescriptionSeq; 

      interface OperationDef:Contained{
          readonly attribute TypeCode result; 
                   attribute IDLType  result_def; 
                   attribute ParDescriptionSeq params; 
                   attribute OperationMode mode; 
                   attribute ContextIdSeq contexts; 
                   attribute ExceptionDefSeq exceptions; 
      };
      
      struct OperationDescription{
          Identifier      name; 
          RepositoryId    id; 
          RepositoryId    defined_in; 
          VersionSpec     version; 
          TypeCode        result; 
          OperationMode   mode; 
          ContextIdSeq    contexts; 
          ParDescriptionSeq parameters; 
          ExcDescriptionSeq exceptions; 
      };
   
      typedef sequence<RepositoryId>RepositoryIdSeq; 
      typedef sequence<OperationDescription>OpDescriptionSeq; 
      typedef sequence<AttributeDescription>AttrDescriptionSeq; 

      interface InterfaceDef:Container,Contained,IDLType{
          // read/write interface
          attribute InterfaceDefSeq base_interfaces; 

          // read interface
          boolean is_a(in RepositoryId interface_id);   // OOCOBOLで使用する場合、メソッド名はIDL-IS_Aです。

          struct FullInterfaceDescription{
              Identifier      name; 
              RepositoryId    id; 
              RepositoryId    defined_in; 
              VersionSpec     version; 
              OpDescriptionSeq operations; 
              AttrDescriptionSeq attributes; 
              RepositoryIdSeq base_interfaces; 
              TypeCode        type; 
          };
          FullInterfaceDescription describe_interface();

          // write interface

          AttributeDef create_attribute(
              in RepositoryId id, 
              in Identifier name, 
              in VersionSpec version, 
              in IDLType type, 
              in AttributeMode mode
          ); 

          OperationDef create_operation(
              in RepositoryId id, 
              in Identifier name, 
              in VersionSpec version, 
              in IDLType result, 
              in OperationMode mode, 
              in ParDescriptionSeq params, 
              in ExceptionDefSeq exceptions, 
              in ContextIdSeq contexts
          ); 
      };

      struct InterfaceDescription{
          Identifier      name; 
          RepositoryId    id; 
          RepositoryId    defined_in; 
          VersionSpec     version; 
          RepositoryIdSeq base_interfaces; 
      };

      interface InterfaceRep{
          // write interface
          Repository   create_repository();
          boolean      create_primitives();
      };
  };

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

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