fixing bugs
This commit is contained in:
parent
2fcfecc403
commit
ca2231587a
3 changed files with 16 additions and 9 deletions
|
@ -26,20 +26,26 @@ public class InputStreamMessageReader {
|
|||
|
||||
static ByteBuffer makeByteBuffer(byte[] bytes) {
|
||||
ByteBuffer result = ByteBuffer.wrap(bytes);
|
||||
result.order(ByteOrder.LITTLE_ENDIAN);
|
||||
|
||||
// something odd is happening here.
|
||||
// result.order(ByteOrder.LITTLE_ENDIAN);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static MessageReader create(InputStream is) throws IOException {
|
||||
ByteBuffer firstWord = makeByteBuffer(readExact(is, 8));
|
||||
|
||||
int segmentCount = 1 + firstWord.getInt();
|
||||
int segmentCount = 1 + firstWord.getInt(0);
|
||||
|
||||
System.out.println("segmentCount = " + segmentCount);
|
||||
|
||||
int segment0Size = 0;
|
||||
if (segmentCount > 0) {
|
||||
segment0Size = firstWord.getInt(1);
|
||||
}
|
||||
|
||||
System.out.println("segment0Size = " + segment0Size);
|
||||
|
||||
int totalWords = segment0Size;
|
||||
|
||||
if (segmentCount > 512) {
|
||||
|
|
|
@ -2,18 +2,19 @@ package capnp;
|
|||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
class StructPointer extends WirePointer {
|
||||
class StructPointer{
|
||||
public WirePointer ptr;
|
||||
|
||||
public StructPointer(ByteBuffer buffer, int buffer_offset) {
|
||||
super(buffer, buffer_offset);
|
||||
public StructPointer(WirePointer ptr) {
|
||||
this.ptr = ptr;
|
||||
}
|
||||
|
||||
public short dataSize() {
|
||||
return this.buffer.getShort(this.buffer_offset * 4 + 2);
|
||||
return this.ptr.buffer.getShort(this.ptr.buffer_offset * 4 + 2);
|
||||
}
|
||||
|
||||
public short ptrCount() {
|
||||
return this.buffer.getShort(this.buffer_offset * 4 + 3);
|
||||
return this.ptr.buffer.getShort(this.ptr.buffer_offset * 4 + 3);
|
||||
}
|
||||
|
||||
public int wordSize() {
|
||||
|
|
|
@ -9,7 +9,7 @@ class WireHelpers {
|
|||
// TODO error handling
|
||||
|
||||
WordPointer ptr = ref.target();
|
||||
StructPointer structPtr = (StructPointer)ref;
|
||||
StructPointer structPtr = new StructPointer(ref);
|
||||
int dataSizeWords = structPtr.dataSize();
|
||||
|
||||
return new StructReader(segment,
|
||||
|
@ -44,7 +44,7 @@ class WireHelpers {
|
|||
// TODO bounds check
|
||||
|
||||
int size = tag.inlineCompositeListElementCount();
|
||||
StructPointer structPtr = (StructPointer)tag;
|
||||
StructPointer structPtr = new StructPointer(tag);
|
||||
int wordsPerElement = structPtr.wordSize();
|
||||
|
||||
// TODO check that elemements do not overrun word count
|
||||
|
|
Loading…
Reference in a new issue