package com.jenjinstudios.server.message;
import com.jenjinstudios.core.io.Message;
import com.jenjinstudios.server.net.ClientHandler;
import com.jenjinstudios.server.net.User;
import com.jenjinstudios.server.sql.Authenticator;
import com.jenjinstudios.server.sql.LoginException;
/**
* Executable message to handle client logging out.
* @author Caleb Brinkman
*/
@SuppressWarnings("unused")
public class ExecutableLogoutRequest extends ServerExecutableMessage
{
/** The SQLHandler used to log out the client. */
private final Authenticator authenticator;
/**
* Construct a new ExecutableLogoutRequest.
* @param clientHandler The client handler which created this message.
* @param message The message used to create this ExecutableMessage.
*/
public ExecutableLogoutRequest(ClientHandler clientHandler, Message message) {
super(clientHandler, message);
authenticator = clientHandler.getServer().getAuthenticator();
}
@Override
public void runDelayed() {
}
@Override
public void runImmediate() {
ClientHandler handler = getClientHandler();
User user = handler.getUser();
if (authenticator != null && user != null)
{
String username = user.getUsername();
try
{
user = authenticator.logOutUser(username);
handler.sendLogoutStatus(!user.isLoggedIn());
handler.setUser(null);
} catch (LoginException e)
{
handler.sendLogoutStatus(false);
}
}
}
}