Skip to content

Commit 08a562e

Browse files
committed
Merge branch 'release/1.5.2'
2 parents 8d36298 + e0e9d3a commit 08a562e

File tree

54 files changed

+539
-72
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+539
-72
lines changed

.github/workflows/ci-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
strategy:
1717
matrix:
1818
os: [ ubuntu-20.04, macos-11, windows-2019 ]
19-
jdk: [ 11, 17 ]
19+
jdk: [ 11, 17, 21 ]
2020
fail-fast: false
2121

2222
steps:
@@ -25,7 +25,7 @@ jobs:
2525
uses: actions/setup-java@v3
2626
with:
2727
java-version: ${{ matrix.jdk }}
28-
distribution: 'temurin'
28+
distribution: 'zulu'
2929
- name: Cache Gradle packages
3030
uses: actions/cache@v3
3131
with:

README.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,18 @@ Project supports 3 kinds of APIs:
4646
**GRPC compatible**. All implementations are directly compatible with GRPC via MessageStreams-RPC & GRPC transport.
4747
GRPC clients can access such services without separate "gateway" binaries and IDL sharing schemes.
4848

49-
**Non-intrusive**. [MessageStreams](https://github.com/jauntsdn/rsocket-jvm/blob/1.5.0/rsocket-reactor/src/main/java/com/jauntsdn/rsocket/MessageStreams.java) API & [RSocket-JVM](https://github.com/jauntsdn/rsocket-jvm/blob/1.5.0/rsocket-reactor/src/main/java/com/jauntsdn/rsocket/RSocket.java) runtime are clearly split so from end-user perspective there is
49+
**Non-intrusive**. [MessageStreams](https://github.com/jauntsdn/rsocket-jvm/blob/1.5.1/rsocket-reactor/src/main/java/com/jauntsdn/rsocket/MessageStreams.java) API & [RSocket-JVM](https://github.com/jauntsdn/rsocket-jvm/blob/1.5.1/rsocket-reactor/src/main/java/com/jauntsdn/rsocket/RSocket.java) runtime are clearly split so from end-user perspective there is
5050
only set of streaming & non-streaming interactions on buffers/messages:
5151

52+
**traditional streaming**
5253
```groovy
5354
void requestResponse(Message message, StreamObserver<Message> responseObserver);
5455
void requestStream(Message message, StreamObserver<Message> responseObserver);
5556
StreamObserver<Message> requestChannel(StreamObserver<Message> responseObserver);
5657
void fireAndForget(Message message, StreamObserver<Message> responseObserver);
5758
```
5859

60+
**reactive streams**
5961
```groovy
6062
Publisher<Message> requestResponse(Message message);
6163
Publisher<Message> requestStream(Message message);
@@ -91,12 +93,14 @@ and Http2 streams based transports for interop:
9193

9294
[messagestreams-grpc-examples](https://github.com/jauntsdn/messagestreams-grpc-examples) demonstrate GRPC-stub StreamObserver based services.
9395

96+
[messagestreams-virtualthreads-examples](https://github.com/jauntsdn/messagestreams-virtualthreads-examples) demonstrate jdk virtual threads based services.
97+
9498
[messagestreams-futures-examples](https://github.com/jauntsdn/messagestreams-futures-examples) demonstrate jdk CompletableFuture based services.
9599

96100
## Build
97101

98-
Building `jauntsdn/RSocket-jvm` requires java20 for virtual threads API, java11+ for smallrye-mutiny;
99-
futures / grpc-stubs / rxjava / reactor are java8+.
102+
Building `jauntsdn/RSocket-jvm` requires java20 if virtual threads modules are included (-Pvirtualthreads -Ptoolchains), java11 otherwise.
103+
100104
```
101105
./gradlew
102106
```
@@ -108,7 +112,7 @@ Building & installing artifacts into local maven repository
108112

109113
## Binaries
110114

111-
Binary releases are published on Maven Central for virtual threads, futures (CompletableFuture), grpc stubs, reactor, rxjava & mutiny libraries.
115+
Binary releases are published on Maven Central for virtualthreads, futures (CompletableFuture), grpc (stubs), reactor, rxjava & mutiny libraries.
112116

113117
```groovy
114118
@@ -117,10 +121,10 @@ repositories {
117121
}
118122
119123
dependencies {
120-
implementation "com.jauntsdn.rsocket:rsocket-messages:1.5.0"
121-
implementation "com.jauntsdn.rsocket:rsocket-rpc-idl:1.5.0"
122-
implementation "com.jauntsdn.rsocket:rsocket-<VENDOR>:1.5.0"
123-
implementation "com.jauntsdn.rsocket:rsocket-rpc-<VENDOR>:1.5.0"
124+
implementation "com.jauntsdn.rsocket:rsocket-messages:1.5.1"
125+
implementation "com.jauntsdn.rsocket:rsocket-rpc-idl:1.5.1"
126+
implementation "com.jauntsdn.rsocket:rsocket-<VENDOR>:1.5.1"
127+
implementation "com.jauntsdn.rsocket:rsocket-rpc-<VENDOR>:1.5.1"
124128
}
125129
```
126130

@@ -129,7 +133,7 @@ MessageStreams-RPC compiler binaries are linux, windows(x86) only
129133
protobuf {
130134
plugins {
131135
rsocketRpc {
132-
artifact = "com.jauntsdn.rsocket:rsocket-rpc-<VENDOR>-compiler:1.5.0"
136+
artifact = "com.jauntsdn.rsocket:rsocket-rpc-<VENDOR>-compiler:1.5.1"
133137
}
134138
}
135139
}

gradle.properties

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
group=com.jauntsdn.rsocket
2-
version=1.5.1
2+
version=1.5.2
33

44
dependencyManagementPluginVersion=1.1.0
55
protobufPluginVersion=0.8.19
66
googleJavaFormatPluginVersion=0.9
77
gitPluginVersion=0.13.0
88
versionsPluginVersion=0.45.0
99

10-
nettyBomVersion=4.1.97.Final
11-
grpcStubVersion=1.57.2
12-
reactorBomVersion=2022.0.10
13-
rxjavaVersion=3.1.7
10+
nettyBomVersion=4.1.101.Final
11+
grpcStubVersion=1.59.0
12+
reactorBomVersion=2022.0.12
13+
rxjavaVersion=3.1.8
1414
helidonCommonReactiveVersion=2.5.6
15-
mutinyVersion=2.3.1
15+
mutinyVersion=2.5.1
1616
jsr305Version=3.0.2
1717
javaxInjectVersion=1
1818
javaxAnnotationVersion=1.3.2
1919
jakartaInjectVersion=2.0.1
2020
jakartaAnnotationVersion=2.1.1
21-
protobufVersion=3.24.2
21+
protobufVersion=3.25.0
2222

23-
junitVersion=5.10.0
23+
junitVersion=5.10.1
2424
assertjVersion=3.24.2
2525

2626
release=false
27-
virtualthreads=true
28-
toolchains=true
27+
virtualthreads=false
28+
toolchains=false
2929
org.gradle.parallel=true
3030
org.gradle.configureondemand=true

rsocket-bom/gradle.lockfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This is a Gradle generated file for dependency locking.
22
# Manual edits can break the build and are not advised.
33
# This file is expected to be part of source control.
4-
io.netty:netty-bom:4.1.97.Final=classpath
5-
io.projectreactor:reactor-bom:2022.0.10=classpath
4+
io.netty:netty-bom:4.1.101.Final=classpath
5+
io.projectreactor:reactor-bom:2022.0.12=classpath
66
empty=

rsocket-futures/gradle.lockfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ com.google.errorprone:javac-shaded:9+181-r4173-1=googleJavaFormat1.6
77
com.google.googlejavaformat:google-java-format:1.6=googleJavaFormat1.6
88
com.google.guava:guava:22.0=googleJavaFormat1.6
99
com.google.j2objc:j2objc-annotations:1.1=googleJavaFormat1.6
10-
io.netty:netty-buffer:4.1.97.Final=compileClasspath,runtimeClasspath
11-
io.netty:netty-common:4.1.97.Final=compileClasspath,runtimeClasspath
10+
io.netty:netty-buffer:4.1.101.Final=compileClasspath,runtimeClasspath
11+
io.netty:netty-common:4.1.101.Final=compileClasspath,runtimeClasspath
1212
org.codehaus.mojo:animal-sniffer-annotations:1.14=googleJavaFormat1.6
1313
empty=annotationProcessor

rsocket-futures/src/main/java/com/jauntsdn/rsocket/MessageStreams.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,42 @@
2121
import java.util.concurrent.CompletionStage;
2222
import java.util.concurrent.ScheduledExecutorService;
2323

24+
/**
25+
* Channel interactions for async exchange of binary messages using jdk's {@link
26+
* java.util.concurrent.CompletableFuture} API.
27+
*/
2428
public interface MessageStreams extends Closeable {
2529

30+
/**
31+
* Unreliable and unordered 1 to 0 messages exchange interaction.
32+
*
33+
* @return {@link CompletionStage} completed successfully as soon as message is scheduled for
34+
* write if channel is connected, or completed with error if channel is disconnected. {@link
35+
* CompletionStage} completion does not imply that message was written on wire; messages
36+
* ordering between several fire-and-forget interactions, or fire-and-forget and other
37+
* interactions is not guaranteed.
38+
*/
2639
CompletionStage<Void> fireAndForget(Message message);
2740

41+
/**
42+
* 1 to strictly 1 messages exchange interaction.
43+
*
44+
* @return {@link CompletionStage} completed successfully with exactly 1 response message,
45+
* otherwise completed with error.
46+
*/
2847
CompletionStage<Message> requestResponse(Message message);
2948

49+
/** @return factory to create messages from byte buffer data & metadata */
3050
default Optional<Message.Factory> messageFactory() {
3151
return Optional.empty();
3252
}
3353

54+
/** @return ExecutorService to schedule actions on channel's event loop */
3455
default Optional<ScheduledExecutorService> scheduler() {
3556
return Optional.empty();
3657
}
3758

59+
/** @return channel's ByteBufAllocator */
3860
default Optional<ByteBufAllocator> allocator() {
3961
return Optional.empty();
4062
}

rsocket-futures/src/main/java/com/jauntsdn/rsocket/RSocket.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,23 @@
2121
import java.util.concurrent.ScheduledExecutorService;
2222
import java.util.function.Function;
2323

24+
/**
25+
* Models RSocket interactions as described in
26+
* https://github.com/rsocket/rsocket/blob/master/Protocol.md#stream-sequences-and-lifetimes
27+
*/
2428
public interface RSocket extends MessageStreams, Availability {
2529

30+
/**
31+
* Enables metadata exchange between connection endpoints.
32+
*
33+
* @param message containing connection metadata.
34+
*/
2635
CompletionStage<Void> metadataPush(Message message);
2736

37+
/**
38+
* @return lightweight {@link ScheduledExecutorService} intended for non-fine-grained tasks
39+
* scheduling (e.g. timeouts).
40+
*/
2841
default Optional<ScheduledExecutorService> coarseScheduler() {
2942
return Optional.empty();
3043
}

rsocket-grpc/gradle.lockfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ com.google.errorprone:javac-shaded:9+181-r4173-1=googleJavaFormat1.6
77
com.google.googlejavaformat:google-java-format:1.6=googleJavaFormat1.6
88
com.google.guava:guava:22.0=googleJavaFormat1.6
99
com.google.j2objc:j2objc-annotations:1.1=googleJavaFormat1.6
10-
io.grpc:grpc-stub:1.57.2=compileClasspath,runtimeClasspath
11-
io.netty:netty-buffer:4.1.97.Final=compileClasspath,runtimeClasspath
12-
io.netty:netty-common:4.1.97.Final=compileClasspath,runtimeClasspath
10+
io.grpc:grpc-stub:1.59.0=compileClasspath,runtimeClasspath
11+
io.netty:netty-buffer:4.1.101.Final=compileClasspath,runtimeClasspath
12+
io.netty:netty-common:4.1.101.Final=compileClasspath,runtimeClasspath
1313
org.codehaus.mojo:animal-sniffer-annotations:1.14=googleJavaFormat1.6
1414
empty=annotationProcessor

rsocket-grpc/src/main/java/com/jauntsdn/rsocket/MessageStreams.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,48 @@
2222
import java.util.Optional;
2323
import java.util.concurrent.ScheduledExecutorService;
2424

25+
/**
26+
* Channel interactions for async exchange of binary messages using GRPC-stub {@link StreamObserver}
27+
* API.
28+
*/
2529
public interface MessageStreams extends Closeable {
2630

31+
/**
32+
* Unreliable and unordered 1 to 0 messages exchange interaction.
33+
*
34+
* @param responseObserver completed successfully as soon as message is scheduled for write if
35+
* channel is connected, or completed with error if channel is disconnected. {@link
36+
* StreamObserver} completion does not imply that message was written on wire; messages
37+
* ordering between several fire-and-forget interactions, or fire-and-forget and other
38+
* interactions is not guaranteed.
39+
*/
2740
void fireAndForget(Message message, StreamObserver<Message> responseObserver);
2841

42+
/**
43+
* 1 to strictly 1 messages exchange interaction.
44+
*
45+
* @param responseObserver completed successfully with exactly 1 response message, otherwise
46+
* completed with error.
47+
*/
2948
void requestResponse(Message message, StreamObserver<Message> responseObserver);
3049

50+
/** 1 to N messages flow-controlled exchange interaction. */
3151
void requestStream(Message message, StreamObserver<Message> responseObserver);
3252

53+
/** N to N messages flow-controlled exchange interaction. */
3354
StreamObserver<Message> requestChannel(StreamObserver<Message> responseObserver);
3455

56+
/** @return factory to create messages from byte buffer data & metadata */
3557
default Optional<Message.Factory> messageFactory() {
3658
return Optional.empty();
3759
}
3860

61+
/** @return ExecutorService to schedule actions on channel's event loop */
3962
default Optional<ScheduledExecutorService> scheduler() {
4063
return Optional.empty();
4164
}
4265

66+
/** @return channel's ByteBufAllocator */
4367
default Optional<ByteBufAllocator> allocator() {
4468
return Optional.empty();
4569
}

rsocket-grpc/src/main/java/com/jauntsdn/rsocket/RSocket.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,23 @@
2121
import java.util.concurrent.ScheduledExecutorService;
2222
import java.util.function.Function;
2323

24+
/**
25+
* Models RSocket interactions as described in
26+
* https://github.com/rsocket/rsocket/blob/master/Protocol.md#stream-sequences-and-lifetimes
27+
*/
2428
public interface RSocket extends MessageStreams, Availability {
2529

30+
/**
31+
* Enables metadata exchange between connection endpoints.
32+
*
33+
* @param message containing connection metadata.
34+
*/
2635
void metadataPush(Message message, StreamObserver<Message> responseObserver);
2736

37+
/**
38+
* @return lightweight {@link ScheduledExecutorService} intended for non-fine-grained tasks
39+
* scheduling (e.g. timeouts).
40+
*/
2841
default Optional<ScheduledExecutorService> coarseScheduler() {
2942
return Optional.empty();
3043
}

0 commit comments

Comments
 (0)