///////////////////////////////////////////////////////////////////////
// STANFORD LOGIC GROUP //
// General Game Playing Project //
// //
// Sample Player Implementation //
// //
// (c) 2007. See LICENSE and CONTRIBUTORS. //
///////////////////////////////////////////////////////////////////////
/**
*
*/
package stanfordlogic.jocular.network;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Logger;
import stanfordlogic.game.GameManager;
import stanfordlogic.gdl.GdlExpression;
import stanfordlogic.gdl.GdlList;
import stanfordlogic.network.RequestHandler;
/**
*
*/
public class StopRequestHandler extends RequestHandler
{
private GdlList content_;
private static final Logger logger_ = Logger.getLogger("stanfordlogic.network");
protected StopRequestHandler( Socket socket, RequestHandler.HttpHeader header,
GdlList content, String matchId ) throws IOException
{
super(socket, header, matchId);
content_ = content;
}
/* (non-Javadoc)
* @see camembert.structure.RequestHandler#execute()
*/
@Override
protected void execute() throws IOException
{
// Tell the game manager that the game ended, passing in the previous moves
GdlExpression prevMoves = content_.getElement(2);
if (prevMoves instanceof GdlList == false) {
logger_.severe(gameId_ + ": Previous move list in STOP message was not a GDL list!");
finish();
return;
}
GameManager.endGame(gameId_, (GdlList) prevMoves);
sendAnswer("DONE");
// THINK: we perform garbage collection here: is that right?
System.gc();
// All done
finish();
}
}