1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.core.file;
21
22 import java.io.IOException;
23 import java.nio.channels.FileChannel;
24
25
26
27
28
29
30
31
32 public class DefaultFileRegion implements FileRegion {
33
34 private final FileChannel channel;
35
36 private final long originalPosition;
37 private long position;
38 private long remainingBytes;
39
40 public DefaultFileRegion(FileChannel channel) throws IOException {
41 this(channel, 0, channel.size());
42 }
43
44 public DefaultFileRegion(FileChannel channel, long position, long remainingBytes) {
45 if (channel == null) {
46 throw new IllegalArgumentException("channel can not be null");
47 }
48 if (position < 0) {
49 throw new IllegalArgumentException("position may not be less than 0");
50 }
51 if (remainingBytes < 0) {
52 throw new IllegalArgumentException("remainingBytes may not be less than 0");
53 }
54 this.channel = channel;
55 this.originalPosition = position;
56 this.position = position;
57 this.remainingBytes = remainingBytes;
58 }
59
60 public long getWrittenBytes() {
61 return position - originalPosition;
62 }
63
64 public long getRemainingBytes() {
65 return remainingBytes;
66 }
67
68 public FileChannel getFileChannel() {
69 return channel;
70 }
71
72 public long getPosition() {
73 return position;
74 }
75
76 public void update(long value) {
77 position += value;
78 remainingBytes -= value;
79 }
80
81 }