package games.strategy.engine.chat;
import java.util.Map;
import games.strategy.engine.message.IRemote;
import games.strategy.net.INode;
import games.strategy.util.Tuple;
/**
* A central controller of who is in the chat.
*
* <p>
* When joining you get a list of all the players currently in the chat
* </p>
*
* <p>
* To handle un-ordered comings and going into the chat, we send a version number with each chat change. The init method
* is the sum of all
* changes < the version number returned in the init message.
* </p>
*/
public interface IChatController extends IRemote {
/**
* Join the chat, returns the chatters currently in the chat.
*/
Tuple<Map<INode, Tag>, Long> joinChat();
/**
* Leave the chat, and ask that everyone stops bothering me.
*/
void leaveChat();
enum Tag {
MODERATOR, NONE
}
}