-- IDL module extracted from ITU-T X.780.1 (08/2001)

/* This IDL code is intended to be stored in a file named "itut_x780_1.idl" located in the search path used by IDL compilers on your system. */ #ifndef ITUT_X780_1_IDL #define ITUT_X780_1_IDL #include <itut_x780.idl> #pragma prefix "itu.int" module itut_x780 { // IMPORTED TYPES // DATA TYPES /** This structure holds the results of retrieving a set of attribute values from a single managed object. The attribute values are placed in the strongly typed attributes member. Because not all values in the attributes may have been requested or supported, the attribute names member holds the list of attribute names for which the attributes member holds valid values. The rest are invalid. */ struct AttributesGetResultType { ManagedObjectValueType attributes; StringSetType attributeNames; }; typedef sequence <AttributesGetResultType> AttributesGetResultSetType; interface AttributesGetResultIterator; // ATTRIBUTES GET RESULT ITERATOR INTERFACE /** The Attributes Get Result Iterator interface is used to retrieve the results from an attributesBulkGet operation using the iterator design pattern. */ interface AttributesGetResultIterator { /** This method is used to retrieve the next "howMany" results in the result set. @param howMany The maximum number of items to be returned in the results. Fewer may be returned if that is all that is left, or to balance delay with efficiency. @param results The next batch of results. @return True if there are more results after those being returned. If the return value is true the results set should not be empty, as this forces the client to poll for results. Instead the call should block. */ boolean getNext(in unsigned short howMany, out AttributesGetResultSetType results) raises (ApplicationError); /** This method is used to destroy the iterator and release its resources. The iterator, though, is automatically destroyed after the last results are returned, and may be destroyed if unused for an unreasonably long period. */ void destroy(); }; // end of interface AttributesGetResultIterator // MANAGED OBJECT FACADE /** The Managed Object facade is intended to be the base interface from which all other managed object facades inherit. It is a central place to specify basic functions which all managed object facades are expected to support. */ interface ManagedObject_F { /** This method returns the scoped name of the most-specific class of the managed object (e.g. "itut_x780::EquipmentR1"). *NOTE* This operation returns the class name of the object, not the facade. This is the name of the facade interface minus the trailing "_F". This is also the same name that goes in the objectClass parameter of notifications, even on interfaces supporting facades. @param name The name of the managed object instance on which the operation is to be invoked. @return The interface name of the managed object. */ ObjectClassType objectClassGet(in NameType name) raises (ApplicationError); /** This method returns a list of all the conditional packages supported by this instance. @param name The name of the managed object instance on which the operation is to be invoked. @return The list of package names suported by the managed object */ StringSetType packagesGet (in NameType name) raises (ApplicationError); /** This method returns an indication of how the object was created. @param name The name of the managed object instance on which the operation is to be invoked. @return An indication of whether the named managed object was created autonomously or by a managing system */ SourceIndicatorType creationSourceGet(in NameType name) raises (ApplicationError); /** This method returns a value indicating if the object may be deleted and if it may, if all contained objects are automatically deleted. @param name The name of the managed object instance on which the operation is to be invoked. @return The delete policy of the named managed object */ DeletePolicyType deletePolicyGet (in NameType name) raises (ApplicationError); /** This method may be used to generically get all of the attributes supported by an instance. Each interface is expected to sub-class the Managed Object value type and add the other attributes supported by that interface. The managed object must return a value object of that type. The client must then narrow the reference to access all the attributes. <p> The client may also submit a list of names indicating the attributes it wishes to receive. These names must match the member names in the value object. For members not on the list, and for members that are part of packages that are not supported, the server may return any value but it should be as short as possible. The server also returns the list of attributes, which may be shorter due to exclusion of attributes in unsupported packages. The client must regard the value of any member not in the returned list as garbage. <p> A null attribute names list indicates that all supported attributes are to be returned. The server must return the actual list. @param name The name of the managed object instance on which the operation is to be invoked. @param attributeNames A list of names of attributes to be retrieved. @return The value type containing the attriubtes. */ ManagedObjectValueType attributesGet ( in NameType name, inout StringSetType attributeNames) raises (ApplicationError); /** This method is used to return multiple attributes from multiple managed objects of the same type. The client supplies a list of attribute names, and a list of managed object names from which to retrieve the attributes. <p> Data is returned in strongly-typed managed object value types, one from each managed object named. If the facade does not provide access for a managed object name provided by the client, no value type for that object is returned. Since a managed system may provide multiple facade interfaces of the same type, the client may have to invoke this operation on multiple interfaces to retrieve values from all of the managed objects of a given type on a system. <p> Even if the client does not request that values for the 'name' attribute be returned, the facade shall return the name in each managed object value type. If it does not, the client will not know which values apply to which managed object instance. <p> Along with each managed object value type returned is a list of the names of the attributes in that value type that have valid values. This list may not match the list of requested attributes as the instance may not support all of the requested attributes. The value "name" shall always be on the returned list. If the instance supports none of the requested attributes the facade shall return a managed object value type for that instance with only the name attribute containing a valid value. <p> Since a potentially large amount of data may be returned, the iterator design pattern is used. The client specifies the maximum number of value types to be returned. The rest must be returned in an iterator. If an iterator is used, the return value shall be true. Otherwise, it shall be false and the iterator reference shall be null. @param names The names of the managed objects from which to retrieve the attribute values. @param attributeNames The names of the attributes to retrieve. @param howMany The maximum number of value types to return in the attributes parameter. @param attributes The first batch of results. @param iterator A reference to an iterator, if needed. Otherwise, null. @return True if an iterator is being returned, otherwise false. */ boolean attributesBulkGet ( in NameSetType names, in StringSetType attributeNames, in unsigned short howMany, out AttributesGetResultSetType attributes, out AttributesGetResultIterator iterator) raises (ApplicationError); /** This method destroys the object. It is used to simply release any resources associated with the managed object. It does not check for contained objects or remove name bindings from the naming tree. <p> The intent of this operation is to allow support services to destroy the managed object. <p><b> NOTE – Direct invocation of this operation from a managing system could corrupt the naming tree and is recommended only under extraordinary circumstances. Clients wishing to delete an object should instead use the terminator service. </b> @param name The name of the managed object instance on which the operation is to be invoked. */ void destroy(in NameType name) raises (ApplicationError, DeleteError); }; // end of ManagedObject_F interface // SYSTEM FACADE interface System_F : ManagedObject_F { /** Operational State, Usage State and Administrative State are described in Recommendation X.731 */ OperationalStateType operationalStateGet (in MONameType name) raises (ApplicationError); UsageStateType usageStateGet (in MONameType name) raises (ApplicationError); /** PRESENT IF an instance supports it. */ AdministrativeStateType administrativeStateGet (in MONameType name) raises (ApplicationError, NOadministrativeStatePackage); void administrativeStateSet (in MONameType name, in AdministrativeStateType administrativeState) raises (ApplicationError, NOadministrativeStatePackage); CONDITIONAL_NOTIFICATION( Notifications, objectCreation, createDeleteNotificationsPackage) CONDITIONAL_NOTIFICATION( Notifications, objectDeletion, createDeleteNotificationsPackage) CONDITIONAL_NOTIFICATION( Notifications, stateChange, stateChangeNotificationPackage) }; // interface System_F // SUBSYSTEM FACADE interface Subsystem_F : System_F { }; // interface Subsystem_F // ApplicationErrorConst Module /** This module contains the constants defined for the error code contained in Application Error Info structures returned with Application Error exceptions. */ module ApplicationErrorConst { /** This application error exception code indicates that a target object of an operation could not be found. */ const short objectNotFound = 4; }; // end of module ApplicationErrorConst }; // end of module itut_x780 #endif // end of #ifndef ITUT_X780_1_IDL