Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members  

CosPropertyService.idl

Go to the documentation of this file.
00001 #ifndef COS_PROPERTYSERVICE_IDL
00002 #define COS_PROPERTYSERVICE_IDL
00003 
00004 #include <orbdefs.idl>
00005 
00006 #pragma prefix "omg.org"
00007 
00013 module CosPropertyService
00014 {
00015    // Data types
00016 
00018    typedef string PropertyName;
00019 
00021    struct Property
00022    {
00023       PropertyName property_name;
00024       any property_value;
00025    };
00026 
00028    enum PropertyModeType
00029    {
00030       normal,
00031       read_only,
00032       fixed_normal,
00033       fixed_readonly,
00034       undefined
00035    };
00036 
00040    struct PropertyDef
00041    {
00042       PropertyName property_name;
00043       any property_value;
00044       PropertyModeType property_mode;
00045    };
00046 
00048    struct PropertyMode
00049    {
00050       PropertyName property_name;
00051       PropertyModeType property_mode;
00052    };
00053 
00056    typedef sequence <PropertyName> PropertyNames;
00057 
00060    typedef sequence <Property> Properties;
00061 
00064    typedef sequence <PropertyDef> PropertyDefs;
00065 
00068    typedef sequence <PropertyMode> PropertyModes;
00069 
00072    typedef sequence <CORBA::TypeCode> PropertyTypes;
00073 
00074    interface PropertyNamesIterator;
00075    interface PropertiesIterator;
00076    interface PropertySetFactory;
00077    interface PropertySetDef;
00078    interface PropertySet;
00079 
00080    //  Exceptions
00081 
00086    exception ConstraintNotSupported{};
00087 
00091    exception InvalidPropertyName {};
00092 
00097    exception ConflictingProperty {};
00098 
00100    exception PropertyNotFound {};
00101 
00105    exception UnsupportedTypeCode {};
00106 
00110    exception UnsupportedProperty {};
00111 
00115    exception UnsupportedMode {};
00116 
00121    exception FixedProperty {};
00122 
00127    exception ReadOnlyProperty {};
00128 
00130    enum ExceptionReason
00131    {
00132       invalid_property_name,
00133       conflicting_property,
00134       property_not_found,
00135       unsupported_type_code,
00136       unsupported_property,
00137       unsupported_mode,
00138       fixed_property,
00139       read_only_property
00140    };
00141 
00145    struct PropertyException
00146    {
00147       ExceptionReason reason;
00148       PropertyName failing_property_name;
00149    };
00150 
00152    typedef sequence <PropertyException> PropertyExceptions;
00153 
00162    exception MultipleExceptions
00163    {
00164       PropertyExceptions exceptions;
00165    };
00166 
00167    //  Interface Definitions
00168 
00169    interface PropertySetFactory
00170    {
00173       PropertySet create_propertyset();
00174 
00186       PropertySet create_constrained_propertyset
00187          (in PropertyTypes allowed_property_types,
00188           in Properties allowed_properties)
00189          raises (ConstraintNotSupported);
00190 
00199       PropertySet create_initial_propertyset
00200          (in Properties initial_properties)
00201          raises (MultipleExceptions);
00202    };
00203 
00204    interface PropertySetDefFactory
00205    {
00206 
00209       PropertySetDef create_propertysetdef ();
00210 
00222       PropertySetDef create_constrained_propertysetdef
00223          (in PropertyTypes allowed_property_types,
00224           in PropertyDefs  allowed_property_defs)
00225          raises (ConstraintNotSupported);
00226 
00235       PropertySetDef create_initial_propertysetdef
00236          (in PropertyDefs  initial_property_defs)
00237          raises (MultipleExceptions);
00238    };
00239 
00240    interface PropertySet
00241    {
00242       /* Support for defining and modifying properties */
00243 
00262       void define_property
00263          (in PropertyName property_name,
00264           in any property_value)
00265          raises (InvalidPropertyName,
00266                  ConflictingProperty,
00267                  UnsupportedTypeCode,
00268                  UnsupportedProperty,
00269                  ReadOnlyProperty);
00270       
00279       void define_properties
00280          (in Properties nproperties)
00281          raises (MultipleExceptions);
00282 
00283       /* Support for Getting Properties and their Names */
00284 
00289       unsigned long get_number_of_properties ();
00290 
00302       void get_all_property_names
00303          (in unsigned long how_mstring,
00304           out PropertyNames property_names,
00305           out PropertyNamesIterator rest);
00306 
00316       any get_property_value
00317          (in  PropertyName property_name)
00318          raises (PropertyNotFound, InvalidPropertyName);
00319 
00333       boolean get_properties
00334          (in PropertyNames property_names,
00335           out Properties nproperties);
00336 
00348       void get_all_properties
00349          (in unsigned long how_mstring,
00350           out Properties nproperties,
00351           out PropertiesIterator rest);
00352 
00353       /* Support for Deleting Properties */
00354 
00355       /* Will delete the property with property_name. 
00356        * @parm property_name - Name of the propety to be deleted.
00357        * @raises PropertyNotFound - If the property with property_name 
00358        * is not defined.
00359        * @raises InvalidPropertyName - If the property_name is invalid.
00360        * @raises FixedProperty - If the mode for the property is 
00361        * fixed_normal or fixed_readonly. 
00362        */
00363 
00364       void delete_property
00365          (in PropertyName property_name)
00366          raises (PropertyNotFound,
00367                  InvalidPropertyName,
00368                  FixedProperty);
00369 
00378       void delete_properties
00379          (in PropertyNames property_names)
00380          raises (MultipleExceptions);
00381 
00387       boolean delete_all_properties ();
00388 
00389       /* Support for Existence Check */
00390 
00397       boolean is_property_defined
00398          (in PropertyName property_name)
00399          raises (InvalidPropertyName);
00400    };
00401 
00402    interface PropertySetDef : PropertySet
00403    {
00404       /* Support for retrieval of PropertySet constraints*/
00405 
00409       void get_allowed_property_types
00410          (out PropertyTypes property_types);
00411 
00416       void get_allowed_properties
00417          (out PropertyDefs property_defs);
00418 
00419       /* Support for defining and modifying properties */
00420 
00442       void define_property_with_mode
00443          (in PropertyName property_name,
00444           in any property_value,
00445           in PropertyModeType property_mode)
00446          raises (InvalidPropertyName,
00447                  ConflictingProperty,
00448                  UnsupportedTypeCode,
00449                  UnsupportedProperty,
00450                  UnsupportedMode,
00451                  ReadOnlyProperty);
00452 
00461       void define_properties_with_modes
00462          (in PropertyDefs property_defs)
00463          raises (MultipleExceptions);
00464 
00465       /* Support for Getting and Setting Property Modes */
00466 
00476       PropertyModeType get_property_mode
00477          (in  PropertyName property_name)
00478          raises (PropertyNotFound, InvalidPropertyName);
00479 
00492       boolean get_property_modes
00493          (in PropertyNames property_names,
00494           out PropertyModes property_modes);
00495 
00502       void set_property_mode
00503          (in PropertyName property_name,
00504           in PropertyModeType property_mode)
00505          raises (InvalidPropertyName,
00506                  PropertyNotFound,
00507                  UnsupportedMode);
00508 
00517       void set_property_modes
00518          (in PropertyModes property_modes)
00519          raises(MultipleExceptions);
00520    };
00521 
00522    interface PropertyNamesIterator
00523    {
00526       void reset ();
00527 
00535       boolean next_one (out PropertyName property_name);
00536 
00543       boolean next_n
00544          (in  unsigned long how_mstring,
00545           out PropertyNames property_names);
00546 
00549       void destroy ();
00550    };
00551 
00552    interface PropertiesIterator
00553    {
00556       void reset ();
00557 
00565       boolean next_one (out Property aproperty);
00566 
00573       boolean next_n
00574          (in unsigned long how_mstring,
00575           out Properties nproperties);
00576 
00579       void destroy ();
00580    };
00581 };
00582 
00583 #endif /* COS_PROPERTYSERVICE_IDL */