summaryrefslogtreecommitdiff
path: root/src/main/java/io/skas/melbjvm/nio2/FileReader.java
diff options
context:
space:
mode:
authorSzymon Szukalski <szymon.szukalski@gmail.com>2012-10-02 21:11:19 +1000
committerSzymon Szukalski <szymon.szukalski@gmail.com>2012-10-02 21:11:19 +1000
commit9c632725afb73bbf0966e52ca50c6d66c12d853b (patch)
treeaa44aaba7f0ce5b2216170b25cc3febaf27f5274 /src/main/java/io/skas/melbjvm/nio2/FileReader.java
parent6a16552fd38a91076169466328763cf541027e31 (diff)
Re-wrote AsynchronousFileReader.
Various clean-ups.
Diffstat (limited to 'src/main/java/io/skas/melbjvm/nio2/FileReader.java')
-rw-r--r--src/main/java/io/skas/melbjvm/nio2/FileReader.java76
1 files changed, 0 insertions, 76 deletions
diff --git a/src/main/java/io/skas/melbjvm/nio2/FileReader.java b/src/main/java/io/skas/melbjvm/nio2/FileReader.java
deleted file mode 100644
index 56882ec..0000000
--- a/src/main/java/io/skas/melbjvm/nio2/FileReader.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package io.skas.melbjvm.nio2;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.AsynchronousFileChannel;
-import java.nio.channels.CompletionHandler;
-import java.nio.file.Path;
-import java.nio.file.StandardOpenOption;
-
-/**
- * @author Szymon Szukalski [szymon.szukalski@portlandrisk.com]
- */
-public class FileReader implements CompletionHandler<Integer, ByteBuffer> {
-
- public static final Logger LOG = LoggerFactory.getLogger(FileReader.class);
-
- private Long fileSize;
- private Path path;
- private ByteBuffer buffer;
- private AsynchronousFileChannel asynchronousFileChannel;
-
- public FileReader(Path path) {
- this.fileSize = 0L;
- this.path = path;
- this.buffer = ByteBuffer.allocate(1048576);
- LOG.info("reading {}...", path);
-
- this.openChannel();
- this.readChannel(0);
- }
-
- private void openChannel() {
- try {
- this.asynchronousFileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- private void readChannel(long position) {
- asynchronousFileChannel.read(buffer, position, buffer, this);
- }
-
- private void closeChannel() {
- try {
- this.asynchronousFileChannel.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void completed(Integer result, ByteBuffer attachment) {
- if (result != -1) {
- this.fileSize += result;
- attachment.flip();
- attachment.clear();
- this.readChannel(this.fileSize);
- } else {
-
- LOG.info("... read in: {} bytes from {}", fileSize, path);
- attachment.flip();
- attachment.clear();
- this.closeChannel();
- }
- }
-
- @Override
- public void failed(Throwable exc, ByteBuffer attachment) {
- LOG.error("read failed: {}", exc.getMessage());
- exc.printStackTrace();
- }
-}