package NET.worlds.network; import NET.worlds.core.Std; import java.util.Enumeration; import java.util.Hashtable; class RoomMgr { Hashtable _roomFRoomID = new Hashtable(); Hashtable _requestList = null; int _requestCount = 0; public RoomMgr() { } public synchronized void addRequest(String roomName, NetworkRoom room) { if (this._requestCount == 0) { this._requestList = new Hashtable(); } assert this._requestList.get(roomName) == null; this._requestList.put(roomName, room); this._requestCount++; } public synchronized void delRequest(String roomName) { if (this._requestList == null) { System.out.println(this + ": delRequest() - " + roomName); new Exception().printStackTrace(System.out); } else { this._requestCount--; this._requestList.remove(roomName); if (this._requestCount == 0) { this._requestList = null; } } } public synchronized NetworkRoom getRequest(String roomName) { if (this._requestList == null) { return null; } else { NetworkRoom tmpRoom = this._requestList.get(roomName); if (tmpRoom != null) { this.delRequest(roomName); } return tmpRoom; } } public void regRoomID(int roomID, NetworkRoom room) { NetworkRoom noRoom = this._roomFRoomID.get(new Integer(roomID)); if (noRoom != null && noRoom != room) { System.out.println("[" + Std.getRealTime() + "]: Weird - room is already registered."); System.out.println("new roomID = " + roomID + ", new room = " + room); System.out.println(room.debugStuff()); System.out.println("old room is " + noRoom); System.out.println(noRoom.debugStuff()); new Exception().printStackTrace(System.out); } this._roomFRoomID.put(new Integer(roomID), room); } public void delRoomID(int roomID, NetworkRoom delRoom) { NetworkRoom room = this._roomFRoomID.remove(new Integer(roomID)); if (room == null) { System.out.println("Error - deleting a bad roomID: " + roomID); System.out.println(delRoom.debugStuff()); new Exception().printStackTrace(System.out); } } public NetworkRoom getRoom(int roomID) { return roomID == 0 ? null : this._roomFRoomID.get(new Integer(roomID)); } public Enumeration rooms() { return this._roomFRoomID.elements(); } }