![JAR search and dependency download from the Maven repository](/logo.png)
org.jivesoftware.openfire.muc.spi.LocalMUCRoomManager Maven / Gradle / Ivy
The newest version!
package org.jivesoftware.openfire.muc.spi;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.jivesoftware.openfire.event.GroupEventDispatcher;
import org.jivesoftware.openfire.muc.MUCRoom;
/**
* this class supports the simple LocalMUCRoom management including remove,add and query.
* @author wuchang
* 2016-1-14
*/
public class LocalMUCRoomManager {
private Map rooms = new ConcurrentHashMap<>();
public int getNumberChatRooms(){
return rooms.size();
}
public void addRoom(String roomname,LocalMUCRoom room){
rooms.put(roomname, room);
GroupEventDispatcher.addListener(room);
}
public Collection getRooms(){
return rooms.values();
}
public LocalMUCRoom getRoom(String roomname){
return rooms.get(roomname);
}
public MUCRoom removeRoom(String roomname){
//memory leak will happen if we forget remove it from GroupEventDispatcher
if(rooms.containsKey(roomname))
GroupEventDispatcher.removeListener((LocalMUCRoom) rooms.get(roomname));
return rooms.remove(roomname);
}
public void cleanupRooms(Date cleanUpDate) {
for (MUCRoom room : getRooms()) {
if (room.getEmptyDate() != null && room.getEmptyDate().before(cleanUpDate)) {
removeRoom(room.getName());
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy