Class ChangeRoomCapacityRequest

  • All Implemented Interfaces:
    sfs2x.client.requests.IRequest

    public class ChangeRoomCapacityRequest
    extends BaseRequest
    Changes the maximum number of users and/or spectators who can join a Room.

    If the operation is successful, the roomCapacityChange event is dispatched to all the users who subscribed the Group to which the target Room belongs, including the requester user himself. If the user is not the creator (owner) of the Room the roomCapacityChangeError event is fired. An administrator or moderator can override this constraint (he is not requested to be the Room's owner).

    In case the Room's capacity is reduced to a value less than the current number of users/spectators inside the Room, exceeding users are NOT disconnected.

    If the Room was configured so that resizing is not allowed (see the RoomSettings.permissions parameter), the request is ignored and no error is fired.

    Also note that some restrictions are applied to the passed values (i.e. a client can't set the max users to more than 200, or the max spectators to more than 32).

    Example
    The following example changes the capacity of an existing Room:

     private void someMethod() {
         sfs.addEventListener(SFSEvent.ROOM_CAPACITY_CHANGE, new IEventListener() {
             public void dispatch(BaseEvent evt) throws SFSException {
                 System.out.println("The capacity of Room " + ((Room)evt.getArguments().get("room")).getName() + " was changed successfully");
             }
         });
         
         sfs.addEventListener(SFSEvent.ROOM_CAPACITY_CHANGE_ERROR, new IEventListener() {
             public void dispatch(BaseEvent evt) throws SFSException {
                 System.out.println("Room capacity change failed: " + evt.getArguments().get("errorMessage"));
             }
         });
         
         Room theRoom = sfs.getRoomByName("Gonzo's Room");
         
         // Resize the Room so that it allows a maximum of 100 users and zero spectators
         sfs.send(new ChangeRoomCapacityRequest(theRoom, 100, 0));
     }
     
    See Also:
    SFSEvent.ROOM_CAPACITY_CHANGE, SFSEvent.ROOM_CAPACITY_CHANGE_ERROR, RoomSettings.getPermissions()
    • Field Detail

      • KEY_ROOM

        public static final java.lang.String KEY_ROOM
        * API internal usage only *
        See Also:
        Constant Field Values
      • KEY_USER_SIZE

        public static final java.lang.String KEY_USER_SIZE
        * API internal usage only *
        See Also:
        Constant Field Values
      • KEY_SPEC_SIZE

        public static final java.lang.String KEY_SPEC_SIZE
        * API internal usage only *
        See Also:
        Constant Field Values
    • Constructor Detail

      • ChangeRoomCapacityRequest

        public ChangeRoomCapacityRequest​(Room room,
                                         int newMaxUsers,
                                         int newMaxSpect)
        Creates a new ChangeRoomCapacityRequest instance. The instance must be passed to the SmartFox.send() method for the request to be performed.
        Parameters:
        room - The Room object corresponding to the Room whose capacity should be changed.
        newMaxUsers - The new maximum number of users/players who can join the Room;
        newMaxSpect - The new maximum number of spectators who can join the Room (for Game Rooms only);
        See Also:
        SmartFox.send(sfs2x.client.requests.IRequest), Room.getMaxUsers()
    • Method Detail

      • validate

        public void validate​(ISmartFox sfs)
                      throws sfs2x.client.exceptions.SFSValidationException
        * API internal usage only *
        Throws:
        sfs2x.client.exceptions.SFSValidationException
      • execute

        public void execute​(ISmartFox sfs)
        * API internal usage only *