
uk.org.retep.xmpp.muc.room.LeaveRoomLogic Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.org.retep.xmpp.muc.room;
import uk.org.retep.util.messaging.MessageException;
import uk.org.retep.xmpp.JID;
import uk.org.retep.xmpp.XMPPServer;
import uk.org.retep.xmpp.logic.AbstractXMPPLogic;
import uk.org.retep.xmpp.logic.XMPPLogic;
import uk.org.retep.xmpp.message.Presence;
import uk.org.retep.xmpp.muc.MucRoom;
import uk.org.retep.xmpp.muc.MucRoomMember;
import uk.org.retep.xmpp.muc.MucService;
/**
* {@link XMPPLogic} used when a user leaves a room
* @author peter
*/
public class LeaveRoomLogic
extends AbstractXMPPLogic
{
private static final LeaveRoomLogic instance = new LeaveRoomLogic();
public static LeaveRoomLogic getInstance()
{
return instance;
}
private LeaveRoomLogic()
{
}
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Presence presence )
throws MessageException
{
// This is the departing users room jid
final JID jidInRoom = presence.getTo();
getLog().info( "%s left %s", presence.getFrom(), jidInRoom );
// Remove the user from the room
final MucRoomMember leavingMember = room.remove( jidInRoom );
// TODO what to do here when a room is empty?
// now send the relevant messages
return new RoomLeaveBroadcast( jidInRoom, leavingMember );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy