Room Creation Threads Overlapping

Post here your questions about SFS2X. Here we discuss all server-side matters. For client API questions see the dedicated forums.

Moderators: Lapo, Bax

ktamlyn
Posts: 17
Joined: 04 Sep 2013, 16:25

Re: Room Creation Threads Overlapping

Post by ktamlyn »

Still getting two rooms. This is what my code looks like now:

Code: Select all

@Instantiation(Instantiation.InstantiationMode.SINGLE_INSTANCE)
public class EnterSessionRoomRequestHandler extends BaseClientRequestHandler {

    public ZoneExtension parentEx;

    @Override
    public void handleClientRequest(User user, ISFSObject params) {

        synchronized (this) {

            parentEx = (ZoneExtension) getParentExtension();
            Integer sessionId = params.getInt("sessionId");

            trace("EnterSessionRoomRequestHandler()");

            // validate user/session pair (again, just in case of clientside bug)
            try {
                parentEx.isSessionIdValid(user.getName(), sessionId);
            } catch (SFSExtensionException e) {
                e.printStackTrace();
            }

            UserVariable userVariable =  new SFSRoomVariable("sessionId", sessionId);
            userVariable.setHidden(true);
            try {
                user.setVariable(userVariable);
            } catch (SFSVariableException e) {
                e.printStackTrace();
            }

            Room room = parentEx.getParentZone().getRoomByName("room"+sessionId.toString());
            if(room == null) {

                CreateRoomSettings roomSettings = new CreateRoomSettings();
                roomSettings.setName("room"+sessionId.toString());

                RoomVariable sessionIdVariable = new SFSRoomVariable("sessionId", sessionId);
                sessionIdVariable.setHidden(false);

                RoomVariable debugVariable = new SFSRoomVariable("debug", true);
                debugVariable.setHidden(false);

                List<RoomVariable> roomVariables = new ArrayList<RoomVariable>();
                roomVariables.add(sessionIdVariable);
                roomVariables.add(debugVariable);
                roomSettings.setRoomVariables(roomVariables);

                CreateRoomSettings.RoomExtensionSettings roomExtensionSettings = new CreateRoomSettings.RoomExtensionSettings("Room", ".roomExtension.RoomExtension");
                roomSettings.setMaxVariablesAllowed(16);
                roomSettings.setExtension(roomExtensionSettings);

                try {
                    getApi().leaveRoom(user, parentEx.getParentZone().getRoomByName("lobby"), false, false);
                    getApi().createRoom(parentEx.getParentZone(), roomSettings, user, true, null, true, true);
                } catch (SFSCreateRoomException e) {
                    e.printStackTrace();
                }

            } else if (room!=null) {
                try {
                    getApi().leaveRoom(user, parentEx.getParentZone().getRoomByName("lobby"), false, false);
                    getApi().joinRoom(user, room, null, false, null, true, true);
                } catch (SFSJoinRoomException e) {
                    e.printStackTrace();
                }
            }
            trace("EnterSessionRoomRequestHandler(): Finish");
        }

    }


}
User avatar
Lapo
Site Admin
Posts: 23438
Joined: 21 Mar 2005, 09:50
Location: Italy

Re: Room Creation Threads Overlapping

Post by Lapo »

Aren't you using an IDE such as Eclipse or Netbeans? If so they should autocomplete the imports for you.
The import is:

Code: Select all

import com.smartfoxserver.v2.annotations.*
cheers
Lapo
--
gotoAndPlay()
...addicted to flash games
Post Reply