/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.distr.grid;
import java.io.*;
import java.net.*;
import org.homedns.dade.jcgrid.message.*;
import org.homedns.dade.jcgrid.server.*;
/**
* Handles JGAP-specific messages on the client-side that are not originally
* supported by JCGrid.
*
* @author Klaus Meffert
* @since 3.2
*/
public class JGAPClientHandlerThread
extends ClientHandlerThread {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.2 $";
public JGAPClientHandlerThread(GridServer server, Socket socket)
throws IOException {
super(server, socket);
}
protected void handleMsg(GridMessage msg)
throws Exception {
if (msg instanceof GridMessageVFSSessionFileRequest) {
String n = ( (GridMessageVFSSessionFileRequest) msg).getName();
// Read the file.
// --------------
File f = new File(super.gridServer.getVFSSessionPool().getPath(),n);
long fsize = f.length();
if (log.isDebugEnabled())
log.debug(" File size: " + fsize);
/**@todo consider 4GB limit*/
byte[] data = new byte[ (int) fsize];
FileInputStream fis = new FileInputStream(f);
fis.read(data);
fis.close();
handlerChannel.send(new GridMessageVFSSessionFileResult(data));
}
else {
super.handleMsg(msg);
}
}
}