diff --git a/runtime/src/main/java/org/capnproto/AnyPointer.java b/runtime/src/main/java/org/capnproto/AnyPointer.java index 8f750cb..1094d3a 100644 --- a/runtime/src/main/java/org/capnproto/AnyPointer.java +++ b/runtime/src/main/java/org/capnproto/AnyPointer.java @@ -48,7 +48,7 @@ public final class AnyPointer { } public static final Factory factory = new Factory(); - public final static class Reader extends Capability.ReaderContext { + public final static class Reader extends CapTableReader.ReaderContext { final SegmentReader segment; final int pointer; // offset in words final int nestingLimit; @@ -67,7 +67,7 @@ public final class AnyPointer { } final Reader imbue(CapTableReader capTable) { - var result = new Reader(segment, pointer, nestingLimit); + Reader result = new Reader(segment, pointer, nestingLimit); result.capTable = capTable; return result; } @@ -83,9 +83,9 @@ public final class AnyPointer { public final ClientHook getPipelinedCap(short[] ops) { AnyPointer.Reader any = this; - for (var pointerIndex: ops) { + for (short pointerIndex: ops) { if (pointerIndex >= 0) { - var reader = WireHelpers.readStructPointer(any.segment, any.capTable, any.pointer, null, 0, any.nestingLimit); + StructReader reader = WireHelpers.readStructPointer(any.segment, any.capTable, any.pointer, null, 0, any.nestingLimit); any = reader._getPointerField(AnyPointer.factory, pointerIndex); } } @@ -93,7 +93,7 @@ public final class AnyPointer { } } - public static final class Builder extends Capability.BuilderContext { + public static final class Builder extends CapTableBuilder.BuilderContext { final SegmentBuilder segment; final int pointer; @@ -176,7 +176,7 @@ public final class AnyPointer { } public Pipeline getPointerField(short pointerIndex) { - var newOps = new short[this.ops.length + 1]; + short[] newOps = new short[this.ops.length + 1]; System.arraycopy(this.ops, 0, newOps, 0, this.ops.length); newOps[this.ops.length] = pointerIndex; return new Pipeline(this.hook, newOps); diff --git a/runtime/src/main/java/org/capnproto/CapTableBuilder.java b/runtime/src/main/java/org/capnproto/CapTableBuilder.java index 01e6825..8f137a7 100644 --- a/runtime/src/main/java/org/capnproto/CapTableBuilder.java +++ b/runtime/src/main/java/org/capnproto/CapTableBuilder.java @@ -1,6 +1,11 @@ package org.capnproto; public interface CapTableBuilder extends CapTableReader { + + class BuilderContext { + public CapTableBuilder capTable; + } + int injectCap(ClientHook cap); void dropCap(int index); diff --git a/runtime/src/main/java/org/capnproto/CapTableReader.java b/runtime/src/main/java/org/capnproto/CapTableReader.java index e8f5be5..b6d6f8d 100644 --- a/runtime/src/main/java/org/capnproto/CapTableReader.java +++ b/runtime/src/main/java/org/capnproto/CapTableReader.java @@ -1,5 +1,10 @@ package org.capnproto; public interface CapTableReader { + + class ReaderContext { + public CapTableReader capTable; + } + ClientHook extractCap(int index); } diff --git a/runtime/src/main/java/org/capnproto/Capability.java b/runtime/src/main/java/org/capnproto/Capability.java index 8fc0f7a..4521c54 100644 --- a/runtime/src/main/java/org/capnproto/Capability.java +++ b/runtime/src/main/java/org/capnproto/Capability.java @@ -5,19 +5,11 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; +import static org.capnproto.ClientHook.BROKEN_CAPABILITY_BRAND; +import static org.capnproto.ClientHook.NULL_CAPABILITY_BRAND; + public final class Capability { - static final Object NULL_CAPABILITY_BRAND = new Object(); - static final Object BROKEN_CAPABILITY_BRAND = new Object(); - - public static class BuilderContext { - public CapTableBuilder capTable; - } - - public static class ReaderContext { - public CapTableReader capTable; - } - public static abstract class Factory implements FromPointerReader, FromPointerBuilder, diff --git a/runtime/src/main/java/org/capnproto/ClientHook.java b/runtime/src/main/java/org/capnproto/ClientHook.java index d04e125..ed4b320 100644 --- a/runtime/src/main/java/org/capnproto/ClientHook.java +++ b/runtime/src/main/java/org/capnproto/ClientHook.java @@ -5,6 +5,8 @@ import java.util.concurrent.CompletableFuture; public interface ClientHook { + static final Object NULL_CAPABILITY_BRAND = new Object(); + static final Object BROKEN_CAPABILITY_BRAND = new Object(); /** * Start a new call, allowing the client to allocate request/response objects as it sees fit. * This version is used when calls are made from application code in the local process. @@ -59,7 +61,7 @@ public interface ClientHook { * Repeatedly calls whenMoreResolved() until it returns nullptr. */ default CompletableFuture whenResolved() { - var promise = whenMoreResolved(); + CompletableFuture promise = whenMoreResolved(); return promise != null ? promise.thenCompose(ClientHook::whenResolved) : CompletableFuture.completedFuture(null); @@ -70,18 +72,18 @@ public interface ClientHook { * reading a null pointer out of a Cap'n Proto message. */ default boolean isNull() { - return getBrand() == Capability.NULL_CAPABILITY_BRAND; + return getBrand() == NULL_CAPABILITY_BRAND; } /** * Returns true if the capability was created by newBrokenCap(). */ default boolean isError() { - return getBrand() == Capability.BROKEN_CAPABILITY_BRAND; + return getBrand() == BROKEN_CAPABILITY_BRAND; } /** - * Implements {@link Capability.Client.getFd}. If this returns null but whenMoreResolved() returns + * Implements Capability.Client.getFd. If this returns null but whenMoreResolved() returns * non-null, then Capability::Client::getFd() waits for resolution and tries again. */ default FileDescriptor getFd() { diff --git a/runtime/src/main/java/org/capnproto/ExportTable.java b/runtime/src/main/java/org/capnproto/ExportTable.java index dcd7730..8cb7089 100644 --- a/runtime/src/main/java/org/capnproto/ExportTable.java +++ b/runtime/src/main/java/org/capnproto/ExportTable.java @@ -19,7 +19,7 @@ abstract class ExportTable implements Iterable { } public T erase(int id, T entry) { - var value = slots.get(id); + T value = slots.get(id); if (value == entry) { freeIds.add(id); return slots.remove(id); @@ -30,8 +30,8 @@ abstract class ExportTable implements Iterable { public T next() { int id = freeIds.isEmpty() ? max++ : freeIds.remove(); - var value = newExportable(id); - var prev = slots.put(id, value); + T value = newExportable(id); + T prev = slots.put(id, value); assert prev == null; return value; } diff --git a/runtime/src/main/java/org/capnproto/ImportTable.java b/runtime/src/main/java/org/capnproto/ImportTable.java index 6905060..970dee8 100644 --- a/runtime/src/main/java/org/capnproto/ImportTable.java +++ b/runtime/src/main/java/org/capnproto/ImportTable.java @@ -19,7 +19,7 @@ abstract class ImportTable implements Iterable { } public T erase(int id, T entry) { - var removed = slots.remove(id, entry); + boolean removed = slots.remove(id, entry); assert removed; return entry; } diff --git a/runtime/src/main/java/org/capnproto/ListBuilder.java b/runtime/src/main/java/org/capnproto/ListBuilder.java index 19f3c59..9d20018 100644 --- a/runtime/src/main/java/org/capnproto/ListBuilder.java +++ b/runtime/src/main/java/org/capnproto/ListBuilder.java @@ -23,7 +23,7 @@ package org.capnproto; import java.util.List; -public class ListBuilder extends Capability.BuilderContext { +public class ListBuilder extends CapTableBuilder.BuilderContext { public interface Factory { T constructBuilder(SegmentBuilder segment, int ptr, int elementCount, int step, @@ -31,9 +31,9 @@ public class ListBuilder extends Capability.BuilderContext { default T constructBuilder(SegmentBuilder segment, CapTableBuilder capTable, int ptr, int elementCount, int step, int structDataSize, short structPointerCount) { - var result = constructBuilder(segment, ptr, elementCount, step, structDataSize, structPointerCount); - if (result instanceof Capability.BuilderContext) { - ((Capability.BuilderContext) result).capTable = capTable; + T result = constructBuilder(segment, ptr, elementCount, step, structDataSize, structPointerCount); + if (result instanceof CapTableBuilder.BuilderContext) { + ((CapTableBuilder.BuilderContext) result).capTable = capTable; } return result; } diff --git a/runtime/src/main/java/org/capnproto/ListReader.java b/runtime/src/main/java/org/capnproto/ListReader.java index bf1f45c..f63ecfe 100644 --- a/runtime/src/main/java/org/capnproto/ListReader.java +++ b/runtime/src/main/java/org/capnproto/ListReader.java @@ -21,7 +21,7 @@ package org.capnproto; -public class ListReader extends Capability.ReaderContext { +public class ListReader extends CapTableReader.ReaderContext { public interface Factory { T constructReader(SegmentReader segment, int ptr, @@ -31,9 +31,9 @@ public class ListReader extends Capability.ReaderContext { default T constructReader(SegmentReader segment, CapTableReader capTable, int ptr, int elementCount, int step, int structDataSize, short structPointerCount, int nestingLimit) { - var result = constructReader(segment, ptr, elementCount, step, structDataSize, structPointerCount, nestingLimit); - if (result instanceof Capability.ReaderContext) { - ((Capability.ReaderContext) result).capTable = capTable; + T result = constructReader(segment, ptr, elementCount, step, structDataSize, structPointerCount, nestingLimit); + if (result instanceof CapTableReader.ReaderContext) { + ((CapTableReader.ReaderContext) result).capTable = capTable; } return result; } diff --git a/runtime/src/main/java/org/capnproto/SetPointerBuilder.java b/runtime/src/main/java/org/capnproto/SetPointerBuilder.java index c1566e1..cdc7f72 100644 --- a/runtime/src/main/java/org/capnproto/SetPointerBuilder.java +++ b/runtime/src/main/java/org/capnproto/SetPointerBuilder.java @@ -22,5 +22,8 @@ package org.capnproto; public interface SetPointerBuilder { + default void setPointerBuilder(SegmentBuilder segment, int pointer, Reader value) { + setPointerBuilder(segment, null, pointer, value); + } void setPointerBuilder(SegmentBuilder segment, CapTableBuilder capTable, int pointer, Reader value); } diff --git a/runtime/src/main/java/org/capnproto/StructBuilder.java b/runtime/src/main/java/org/capnproto/StructBuilder.java index 6285dce..f954377 100644 --- a/runtime/src/main/java/org/capnproto/StructBuilder.java +++ b/runtime/src/main/java/org/capnproto/StructBuilder.java @@ -21,15 +21,15 @@ package org.capnproto; -public class StructBuilder extends Capability.BuilderContext { +public class StructBuilder extends CapTableBuilder.BuilderContext { public interface Factory { T constructBuilder(SegmentBuilder segment, int data, int pointers, int dataSize, short pointerCount); default T constructBuilder(SegmentBuilder segment, CapTableBuilder capTable, int data, int pointers, int dataSize, short pointerCount) { - var result = constructBuilder(segment, data, pointers, dataSize, pointerCount); - if (result instanceof Capability.BuilderContext) { - ((Capability.BuilderContext) result).capTable = capTable; + T result = constructBuilder(segment, data, pointers, dataSize, pointerCount); + if (result instanceof CapTableBuilder.BuilderContext) { + ((CapTableBuilder.BuilderContext) result).capTable = capTable; } return result; } diff --git a/runtime/src/main/java/org/capnproto/StructReader.java b/runtime/src/main/java/org/capnproto/StructReader.java index 3225c71..14532a6 100644 --- a/runtime/src/main/java/org/capnproto/StructReader.java +++ b/runtime/src/main/java/org/capnproto/StructReader.java @@ -21,7 +21,7 @@ package org.capnproto; -public class StructReader extends Capability.ReaderContext { +public class StructReader extends CapTableReader.ReaderContext { public interface Factory { T constructReader(SegmentReader segment, int data, int pointers, int dataSize, short pointerCount, @@ -29,9 +29,9 @@ public class StructReader extends Capability.ReaderContext { default T constructReader(SegmentReader segment, CapTableReader capTable, int data, int pointers, int dataSize, short pointerCount, int nestingLimit) { - var result = constructReader(segment, data, pointers, dataSize, pointerCount, nestingLimit); - if (result instanceof Capability.ReaderContext) { - ((Capability.ReaderContext) result).capTable = capTable; + T result = constructReader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + if (result instanceof CapTableReader.ReaderContext) { + ((CapTableReader.ReaderContext) result).capTable = capTable; } return result; }