/**
  * File: 		DynamicSubgroupsUser.java
  * Content: 	part of the RMI specification of sensei domains
  *           Defines the interface to be used by members using the SubgroupsHandler interface
  *           with dynamic groups
  * Author: 	LuisM Pena
  * Date: 		27th October 2001
  * Version:  0.51.00
  * Last change:
  *
  **/


package sensei.middleware.domains;

import sensei.middleware.gms.GroupMember;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
  * Defines the interface to be used by members using the SubgroupsHandler interface
  * with dynamic groups
  */
public interface DynamicSubgroupsUser extends Remote
{
  /**
   * Request during state transfer to accept an existing dynamic subgroup; a subgroup must be returned,
   */
  public GroupMember acceptSubgroup(int subgroupId, DynamicSubgroupInfo info)
    throws RemoteException;

  /**
   * Notification that a subgroup has been dynamically created. A subgroup must be returned,
   */
  public GroupMember subgroupCreated(int creator, int subgroupId, DynamicSubgroupInfo info)
    throws RemoteException;

  /**
   * Notification that a subgroup has been dynamically removed.
   */
  public void subgroupRemoved(int remover, int subgroupId, DynamicSubgroupInfo info) throws RemoteException;
}