Repository navigation
docs(bindings): a runnable Java example, run in CI - #591
Open
aditipolkam wants to merge 1 commit into
Open
aditipolkam wants to merge 1 commit into
aditipolkam wants to merge 1 commit into
Conversation
Two devices in one JVM pair, establish an encrypted session and exchange messages, with the app doing only what a transport does: moving bytes between engines. It depends on the published coordinate and substitutes the checkout's binding through a composite build, so it cannot drift from the code it documents.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
examples/java-app, a runnable example for the Java binding merged in #582.Two devices, Alice and Bob, in one JVM pair, establish an end-to-end encrypted session and exchange two messages. The only simulated part is the network: a short loop moves bytes between the two engines (
internetGetNextMessagetointernetMessageReceived), which is what a real transport does. The pairing, the MLS session and the encryption are the engine's own.ProtocolConfig(the generated record has no defaults, J2), the engine's built-in file stores, answering the pairing events, and treatingSessionNotReadyas "not yet" while the key package is in flight.settings.gradle.ktsdepends on the published coordinatecom.offlineprotocol:offline-protocol-javaand substitutes the checkout's binding through a composite build, so it runs against this source; in a real project that block is dropped.bindings/java/README.md.Type of change
docs: documentation only (an example, plus one CI step that runs it)Checks run locally
gradle runinexamples/java-appon this branch (JDK 26, Gradle 9.3.1): pairs, and both messages arrive.scripts/tests/test-generate-bindings.sh: 63 guards pass.Not run locally: the new CI step on macOS and Windows.