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
33 public class DefaultFileRegion implements FileRegion {
34
35 private final FileChannel channel;
36
37 private final long originalPosition;
38 private long position;
39 private long remainingBytes;
40
41 public DefaultFileRegion(FileChannel channel) throws IOException {
42 this(channel, 0, channel.size());
43 }
44
45 public DefaultFileRegion(FileChannel channel, long position, long remainingBytes) {
46 if (channel == null) {
47 throw new IllegalArgumentException("channel can not be null");
48 }
49 if (position < 0) {
50 throw new IllegalArgumentException("position may not be less than 0");
51 }
52 if (remainingBytes < 0) {
53 throw new IllegalArgumentException("remainingBytes may not be less than 0");
54 }
55 this.channel = channel;
56 this.originalPosition = position;
57 this.position = position;
58 this.remainingBytes = remainingBytes;
59 }
60
61 public long getWrittenBytes() {
62 return position - originalPosition;
63 }
64
65 public long getRemainingBytes() {
66 return remainingBytes;
67 }
68
69 public FileChannel getFileChannel() {
70 return channel;
71 }
72
73 public long getPosition() {
74 return position;
75 }
76
77 public void update(long value) {
78 position += value;
79 remainingBytes -= value;
80 }
81
82 }