/* * Copyright 2006-2010 Daniel Henninger. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */ package net.sf.kraken.muc; import net.sf.kraken.roster.TransportBuddy; import net.sf.kraken.session.TransportSession; import net.sf.kraken.type.PresenceType; /** * @author Daniel Henninger */ public abstract class MUCTransportSession<B extends TransportBuddy> { /** * Creates the MUC session instance, associated with a particular room name. * * @param session Transport session that the MUC session is associated with. * @param roomname Name of room associated with this MUC session. * @param nickname Nickname we are using with the MUC session. * @param transport MUCTransport we are associated with. */ public MUCTransportSession(TransportSession<B> session, String roomname, String nickname, BaseMUCTransport<B> transport) { this.session = session; this.roomname = roomname; this.nickname = nickname; this.transport = transport; } /* MUC transport we are associaed with. */ public BaseMUCTransport<B> transport = null; /* Name of room this session is associated with. */ public String roomname = null; /* Transport session this session are associated with. */ public TransportSession<B> session = null; /* Nickname associated with this session. */ public String nickname = null; /** * Retrieves the nickname associated with this session. * * @return The nickname associated with the session. */ public String getNickname() { return nickname; } /** * Connect to the actual chatroom using a specified nickname. */ public abstract void enterRoom(); /** * Disconnects from/leaves a chatroom on the remote service. */ public abstract void leaveRoom(); /** * Sends a message to the chatroom. * * @param message Message to send to chatroom. */ public abstract void sendMessage(String message); /** * Sends a private message to a user in a chatroom. * * @param nickname Nickname of user to send message to. * @param message Message to send to person in chatroom. */ public abstract void sendPrivateMessage(String nickname, String message); /** * Updates the user's status in the chat room. * * @param presenceType Type of presence. */ public abstract void updateStatus(PresenceType presenceType); /** * Updates the topic of the chat room. * * @param topic New topic to set. */ public abstract void updateTopic(String topic); /** * Kick a person from the chat room. * * @param nickname Nickname of user to kick. * @param reason Reason for kicking the user. */ public abstract void kickUser(String nickname, String reason); /** * Grant voice to a chat room member. * * @param nickname Nickname to grant voice to. */ public abstract void grantVoice(String nickname); /** * Revoke voice from a chat room member. * * @param nickname Nickname to revoke voice from. */ public abstract void revokeVoice(String nickname); /** * Ban a user from the chat room. * * @param nickname Nickname to ban from the chat room. * @param reason Reason for banning the user. */ public abstract void banUser(String nickname, String reason); /** * Grant membership to a chat room member. * * @param nickname Nickname to grant membership to. */ public abstract void grantMembership(String nickname); /** * Revoke membership from a chat room member. * * @param nickname Nickname to revoke membership from. */ public abstract void revokeMembership(String nickname); /** * Grant moderator status to a chat room member. * * @param nickname Nickname to grant moderator status to. */ public abstract void grantModerator(String nickname); /** * Revoke moderator status from a chat room member. * * @param nickname Nickname to revoke moderator status from. */ public abstract void revokeModerator(String nickname); }