use of io.xol.chunkstories.net.PacketsContextCommon in project chunkstories by Hugobros3.
the class PacketReceiveFile method process.
@Override
public void process(PacketSender sender, DataInputStream in, PacketReceptionContext processor) throws IOException, PacketProcessingException {
if (!(processor instanceof ClientPacketsContext))
return;
// ClientPacketsContext cppi = (ClientPacketsContext)processor;
String fileTag = in.readUTF();
long fileLength = in.readLong();
if (fileLength > 0) {
PacketsContextCommon context = (PacketsContextCommon) processor;
PendingDownload pendingDownload = context.getConnection().getLocationForExpectedFile(fileTag);
if (pendingDownload == null)
throw new IOException("Received unexpected PacketFile with tag: " + fileTag);
// Class to report back the download status to whoever requested it via the onStart callback
PacketFileDownloadStatus status = new PacketFileDownloadStatus((int) fileLength);
if (pendingDownload.a != null)
pendingDownload.a.onStart(status);
long remaining = fileLength;
FileOutputStream fos = new FileOutputStream(pendingDownload.f);
byte[] buffer = new byte[4096];
while (remaining > 0) {
long toRead = Math.min(4096, remaining);
System.out.println("Working ! ...");
// cppi.getConnection().getCurrentlyDownloadedFileProgress().setStepText("Downloading "+fileTag+", "+(fileLength - remaining)/1024+"/"+fileLength/1024+"kb");
int actuallyRead = in.read(buffer, 0, (int) toRead);
fos.write(buffer, 0, (int) actuallyRead);
remaining -= actuallyRead;
status.downloaded += actuallyRead;
}
status.end.release();
fos.close();
}
}
use of io.xol.chunkstories.net.PacketsContextCommon in project chunkstories by Hugobros3.
the class PacketContentTranslator method process.
@Override
public void process(PacketSender sender, DataInputStream in, PacketReceptionContext context) throws IOException, PacketProcessingException {
this.serializedText = in.readUTF();
ByteArrayInputStream bais = new ByteArrayInputStream(serializedText.getBytes("UTF-8"));
BufferedReader reader = new BufferedReader(new InputStreamReader(bais, "UTF-8"));
try {
OnlineContentTranslator translator = new LoadedContentTranslator(context.getContext().getContent(), reader);
PacketsContextCommon cCommon = (PacketsContextCommon) context;
cCommon.setContentTranslator(translator);
context.logger().info("Successfully installed content translator");
cCommon.getConnection().handleSystemRequest("world/translator_ok");
} catch (IncompatibleContentException e) {
e.printStackTrace();
}
reader.close();
}
Aggregations