All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.org.retep.xmpp.muc.room.LeaveRoomLogic Maven / Gradle / Ivy

There is a newer version: 10.6
Show newest version
/*
 * 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