/** * File: Properties.idl * Content: Definition of the Properties handling operations * Author: LuisM Pena * Date: 11th April 2001 * Version: 0.51.00 * Last change: * **/ #ifndef PROPERTIES_IDL #define PROPERTIES_IDL #include "DomainExceptions.idl" #include "StateTransfer.idl" module sensei { module middleware { module domains { struct MemberProperties { GroupMemberId member; Properties props; }; typedef sequence <MemberProperties> MemberPropertiesList; /***********************************************************************/ /************************* PROPERTY DISABLED EXCEPTION *****************/ /***********************************************************************/ /** * Exception thrown when using properties if the user has disabled them */ exception PropertiesDisabledException { }; /***********************************************************************/ /************************* PROPERTIES LISTENER *************************/ /***********************************************************************/ /** * Interface to be implemented by members using properties */ interface PropertiesListener { /** * Only are received the notifications from the members who update their properties. */ void propertiesUpdated (in Location loc); }; /***********************************************************************/ /************************* PROPERTIES HANDLER **************************/ /***********************************************************************/ interface PropertiesHandler { /** * Enables the use of properties, which is disabled by default. * This method must be invoked before the member joins the group, or an exception is raised. * Every member in the group must use the same properties * policy. */ void enableProperties() raises (MemberStateException); /** * Returns the properties policy */ boolean arePropertiesEnabled(); /** * Sets a PropertiesListener, that will receive the properties update notifications. The user * can be set at any moment, and if a nil user is specified, no user will be used. */ void setPropertiesListener(in PropertiesListener listener) raises (PropertiesDisabledException); /** * Returns the properties of all the members with state. * Properties are only available once the member has received the state. Otherwise, an * MemberStateException is thrown */ MemberPropertiesList getAllProperties () raises (MemberStateException, PropertiesDisabledException); /** * Returns the property with the given name of all the members with state. * Properties are only available once the member has received the state. Otherwise, an * MemberStateException is thrown */ MemberPropertiesList getPropertyForAllMembers (in Name nam) raises (MemberStateException, PropertiesDisabledException); /** * Returns the properties of the specified member. * Properties are only available once the member has received the state. Otherwise, an * MemberStateException is thrown */ Properties getMemberProperties (in Location loc) raises (MemberStateException, PropertiesDisabledException); /** * Returns the property with the given name for the specified member. * Properties are only available once the member has received the state. Otherwise, an * MemberStateException is thrown */ Value getMemberProperty (in Location loc, in Name n) raises (MemberStateException, PropertiesDisabledException); /** * Returns the properties of the member handled by this PropertyHandler. * Properties for a given member are available at any moment, not just after the member receives the state */ Properties getProperties() raises (PropertiesDisabledException); /** * Returns the property with the given name for the member handled by this PropertyHandler. * Properties for a given member are available at any moment, not just after the member receives the state */ Value getProperty(in Name n) raises (PropertiesDisabledException); /** * Sets the properties for the member handled by this PropertyHandler. * Properties for a given member are available at any moment, not just after the member receives the state. * The properties are propagated to the group if the member has state, otherwise the other members will * know the changes once the transfer finishes. */ void setProperties (in Properties props) raises (MemberStateException, PropertiesDisabledException); /** * Adds the properties for the member handled by this PropertyHandler. If some property were already * existing, its value is overriden. * Properties for a given member are available at any moment, not just after the member receives the state. * The properties are propagated to the group if the member has state, otherwise the other members will * know the changes once the transfer finishes. */ void addProperties (in Properties props) raises (MemberStateException, PropertiesDisabledException); /** * Removes the properties for the member handled by this PropertyHandler. If some property were not * existing, it is ignored. * Properties for a given member are available at any moment, not just after the member receives the state. * The properties are propagated to the group if the member has state, otherwise the other members will * know the changes once the transfer finishes. */ void removeProperties (in Properties props) raises (MemberStateException, PropertiesDisabledException); }; }; }; }; #endif