capnproto-java-rpc/runtime/src/main/java/org/capnproto/ReaderArena.java

34 lines
865 B
Java
Raw Normal View History

2014-05-24 14:12:44 +00:00
package org.capnproto;
2014-06-18 01:06:50 +00:00
import java.util.ArrayList;
import java.nio.ByteBuffer;
2014-05-24 14:12:44 +00:00
public final class ReaderArena implements Arena {
2014-06-18 01:06:50 +00:00
2014-10-08 19:16:17 +00:00
public long limit;
// current limit
2014-06-18 01:06:50 +00:00
public final ArrayList<SegmentReader> segments;
2014-10-08 19:16:17 +00:00
public ReaderArena(ByteBuffer[] segmentSlices, long traversalLimitInWords) {
this.limit = traversalLimitInWords;
2014-06-18 01:06:50 +00:00
this.segments = new ArrayList<SegmentReader>();
for(int ii = 0; ii < segmentSlices.length; ++ii) {
this.segments.add(new SegmentReader(segmentSlices[ii], this));
}
}
2014-05-24 14:12:44 +00:00
public SegmentReader tryGetSegment(int id) {
2014-06-18 01:06:50 +00:00
return segments.get(id);
2014-05-24 14:12:44 +00:00
}
2014-10-08 19:16:17 +00:00
public final void checkReadLimit(int numBytes) {
// TODO worry about thread safety?
if (numBytes > limit) {
return;
} else {
limit -= numBytes;
}
}
2014-05-24 14:12:44 +00:00
}