/** * File: StateTransfer.idl * Content: Definition of the State Transfer interface * Author: LuisM Pena * Date: 11th April 2001 * Version: 0.51.00 * Last change: * **/ #ifndef STATE_TRANSFER_IDL #define STATE_TRANSFER_IDL #include "GroupMembershipService.idl" module sensei { module middleware { module domains { //bringing some declarations into scope ... typedef sensei::middleware::gms::GroupMember GroupMember; typedef sensei::middleware::gms::GroupMemberId GroupMemberId; //taking some definitions from the CORBA specification, applying changes when required abstract valuetype State {}; //instead of the basic ANY definition typedef GroupMemberId Location; //instead of CosNaming::Name typedef sequence <Location> Locations; interface Checkpointable : GroupMember//does not use underscore, i.e, get_state! { State getState(); void setState (in State s); }; typedef string Name; typedef string Value; //simplified approach, using string instead of any struct Property { Name nam; Value val; }; typedef sequence <Property> Properties; /***********************************************************************/ /************************* PHASE COORDINATION **************************/ /***********************************************************************/ valuetype PhaseCoordination { public boolean transferFinished; }; /***********************************************************************/ /************************* EXTENDED CHECKPOINTABLE *********************/ /***********************************************************************/ interface ExtendedCheckpointable : Checkpointable { void assumeState (); }; /***********************************************************************/ /************************* BASIC STATE HANDLER *************************/ /***********************************************************************/ interface BasicStateHandler : GroupMember { void assumeState (); void startTransfer (in Locations joiningMembers, inout PhaseCoordination phase); State getState (inout PhaseCoordination phase); void setState (in State s, in PhaseCoordination phase); void stopTransfer (in Locations joiningMembers, in boolean transferFinished); }; /***********************************************************************/ /************************* STATE HANDLER *******************************/ /***********************************************************************/ interface StateHandler : BasicStateHandler { void syncTransfer (in Location coordinator, inout PhaseCoordination phase); void interruptTransfer (inout PhaseCoordination phase); void continueTransfer (in Locations joiningMembers, inout PhaseCoordination coordinator, in PhaseCoordination joining); }; /***********************************************************************/ /************************* COORDINATOR ELECTOR *************************/ /***********************************************************************/ struct CoordinatorInformation { Location statusMember; Locations currentCoordinations; }; typedef sequence <CoordinatorInformation> CoordinatorInformationList; interface CoordinatorElector { Location getCoordinator (in Location loc, in CoordinatorInformationList info); }; /***********************************************************************/ /************************* BEHAVIOUR ON VIEW CHANGES *******************/ /***********************************************************************/ enum BehaviourOnViewChanges { MembersOnTransferExcludedFromGroup, StatelessMembersDoNotBelongToGroup, StatelessMembersBelongToGroup }; }; }; }; #endif