package org.getspout.spout.packet;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.getspout.spout.io.FileUtil;
public class PacketCacheFile implements SpoutPacket {
private String plugin;
private byte[] fileData;
private String fileName;
public PacketCacheFile() {
}
public PacketCacheFile(String plugin, File file) {
this.plugin = plugin;
try {
this.fileData = FileUtils.readFileToByteArray(file);
} catch (IOException e) {
e.printStackTrace();
}
this.fileName = FileUtil.getFileName(file.getPath());
}
@Override
public int getNumBytes() {
return PacketUtil.getNumBytes(fileName) + PacketUtil.getNumBytes(plugin) + fileData.length + 4;
}
@Override
public void readData(DataInputStream input) throws IOException {
this.fileName = PacketUtil.readString(input);
this.plugin = PacketUtil.readString(input);
int size = input.readInt();
this.fileData = new byte[size];
input.read(this.fileData);
}
@Override
public void writeData(DataOutputStream output) throws IOException {
PacketUtil.writeString(output, fileName);
PacketUtil.writeString(output, plugin);
output.writeInt(fileData.length);
output.write(fileData);
}
@Override
public void run(int playerId) {
File directory = FileUtil.getCacheDirectory();
File cache = new File(directory, fileName);
try {
FileUtils.writeByteArrayToFile(cache, fileData);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void failure(int playerId) {
// TODO Auto-generated method stub
}
@Override
public PacketType getPacketType() {
return PacketType.PacketCacheFile;
}
@Override
public int getVersion() {
return 0;
}
}