https://github.com/vaci/capnproto-java-rpc rebased on top of capnproto-java master branch
Find a file
Jonah Beckford 27ea6745e5
Support signed offsets
Both Structs and Lists support two's complement "Signed" offsets:

> B (30 bits) = Offset, in words, from the end
> of the pointer to the start of the struct's
> data section.  Signed.

> B (30 bits) = Offset, in words, from the end
> of the pointer to the start of the first
> element of the list.  Signed.

The prior code only supported positive offsets
because it used the Java >>> operator, which
is an unsigned shift operator. The Java >>
operator is the signed shift operator.

Audited the remaining uses of the shift
operator; they were correct and they are
documented as such.

Positive offsets are only guaranteed in a Canonical message.
2024-10-07 12:38:05 +03:00
.github/workflows CI token (#31) 2022-08-08 14:41:11 +01:00
.run add calculator example 2020-12-03 15:52:00 +00:00
benchmark bump version numbers 2024-10-07 12:37:24 +03:00
cmake Bump the C++ standard flag up to -c++14 2020-03-03 22:06:06 -05:00
compiler remove unix-specific includes in capnpc-java 2024-10-07 12:38:05 +03:00
examples bump version numbers 2024-10-07 12:37:24 +03:00
runtime Support signed offsets 2024-10-07 12:38:05 +03:00
runtime-rpc remove AsynchronousByteListenChannel 2022-08-31 14:43:14 +01:00
security-advisories Add advisories for recently found vulnearbilities 2021-10-11 11:08:50 -04:00
website website updates 2020-07-14 20:57:58 -04:00
.gitignore Add make as a compile task in the generator project, remove capnpc-java binary when sbt clean is run 2014-05-16 13:16:00 -04:00
.gitlab-ci.yml add gitlab CI to master 2021-03-19 13:39:39 +00:00
CHANGELOG.md fix typo in changelog 2024-10-07 12:37:23 +03:00
CONTRIBUTORS ah, so that's how you spell it 2014-05-15 23:30:05 -04:00
do_benchmarks.bash set -e in do_benchmarks.bash 2020-05-12 23:04:06 -04:00
foo.raw add testEmbargoNull test 2020-11-26 15:06:20 +00:00
gen add lite mode for compiler 2020-11-07 16:56:01 +00:00
jitpack.yml Specify OpenJDK version for JitPack (#28) 2022-08-08 14:51:46 +01:00
LICENSE stub package documentation 2015-01-29 10:33:45 -05:00
Makefile Makefile: respect CFLAGS and LDFLAGS 2021-12-20 17:33:22 -05:00
pom.xml bump version numbers 2024-10-07 12:37:24 +03:00
README.md Update README.md 2022-11-27 17:50:02 +00:00
RELEASE-PROCESS.md update release process notes 2020-05-12 22:56:00 -04:00

capnproto-java: Cap'n Proto for Java

Build Status

Cap'n Proto is an extremely efficient protocol for sharing data and capabilities, and capnproto-java is a pure Java implementation.

Read more here.

This repository clone adds an implementation of the RPC framework for Java.

Promise pipelining is provided via java.util.concurrent.CompletableFuture. Unlike the KJ asynchronous model, which completes promises only when they are waited upon, a CompletableFuture can complete immediately. This may break E-ordering, as the C++ implementation relies on kj::evalLater() to defer method calls and this implementation may have subtle differences.

Most of the C++ RPC test cases have been ported to this implementation, which gives me some comfort that the implementation logic is correct, but more extensive testing is required.

This implementation does not support generic interfaces. Extending the schema compiler to output code for generic interfaces is an exercise I leave to the reader.