Skip to content

Commit

Permalink
Move PlatformDependent to servicetalk-utils-internal #879 (#882)
Browse files Browse the repository at this point in the history
Motivation:

PlatformDependent class lives in `servicetalk-concurrent-internal` module, but is not designed only for concurrent primitives. Different modules use it and therefore depend on servicetalk-concurrent-internal (and transitively on servicetalk-concurrent). This is not ideal, because requires unnecessary dependencies.

Modifications:

* Moved files `PlatformDependent.java`, `PlatformDependent0.java`, `ReflectionUtils.java` from `servicetalk-concurrent-internal` module to `servicetalk-utils-internal` module.
* Moved `gradle/checkstyle/suppressions.xml` from `servicetalk-concurrent-internal` module to `servicetalk-utils-internal` module.
* Removed `jctools` dependency from `servicetalk-concurrent-internal`.
* Added `jctools` and `sl4j` dependencies to `servicetalk-utils-internal`.
* Added `servicetalk-utils-internal` project as implementation dependency to `servicetalk-buffer-netty`, `servicetalk-concurrent-api`, `servicetalk-concurrent-api-internal`, `servicetalk-concurrent-internal`, `servicetalk-data-jakson`, `servicetalk-grps-api`, `servicetalk-transport-netty-internal`.
* Added `servicetalk-utils-internal` project as `testImplementation` dependency to `servicetalk-grpc-netty` and `servicetalk-http-netty`.
* Removed `servicetalk-concurrent-internal` dependency from `servicetalk-buffer-netty`.
* Modified a lot of class files import and static import statements to use `io.servicetalk.util.internal...` instead of `io.servicetalk.concurrent.internal...` for `PlatformDependent`, `PlatformDependent0`, `ReflectionUtils` classes and its inner static members.

Result:

`PlatformDependent` class moved into `servicetalk-utils-internal` module.
  • Loading branch information
muthupalaniappan authored and idelpivnitskiy committed Dec 2, 2019
1 parent 0677c62 commit 707d8be
Show file tree
Hide file tree
Showing 40 changed files with 51 additions and 41 deletions.
2 changes: 1 addition & 1 deletion servicetalk-buffer-netty/build.gradle
Expand Up @@ -21,7 +21,7 @@ dependencies {
api "io.netty:netty-buffer:$nettyVersion"

implementation project(":servicetalk-annotations")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "org.slf4j:slf4j-api:$slf4jVersion"

Expand Down
Expand Up @@ -30,7 +30,7 @@
import java.nio.charset.Charset;

import static io.servicetalk.buffer.api.EmptyBuffer.EMPTY_BUFFER;
import static io.servicetalk.concurrent.internal.PlatformDependent.useDirectBufferWithoutZeroing;
import static io.servicetalk.utils.internal.PlatformDependent.useDirectBufferWithoutZeroing;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static java.nio.charset.StandardCharsets.UTF_8;

Expand All @@ -45,6 +45,7 @@ final class ServiceTalkBufferAllocator extends AbstractByteBufAllocator implemen
private final boolean noZeroing;

ServiceTalkBufferAllocator(boolean preferDirect, boolean tryNoZeroing) {

super(preferDirect);
this.noZeroing = tryNoZeroing && useDirectBufferWithoutZeroing();
}
Expand Down
Expand Up @@ -34,12 +34,12 @@

import java.nio.ByteBuffer;

import static io.servicetalk.concurrent.internal.PlatformDependent.allocateMemory;
import static io.servicetalk.concurrent.internal.PlatformDependent.freeMemory;
import static io.servicetalk.concurrent.internal.PlatformDependent.newDirectBuffer;
import static io.servicetalk.concurrent.internal.PlatformDependent.reserveMemory;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.concurrent.internal.PlatformDependent.unreserveMemory;
import static io.servicetalk.utils.internal.PlatformDependent.allocateMemory;
import static io.servicetalk.utils.internal.PlatformDependent.freeMemory;
import static io.servicetalk.utils.internal.PlatformDependent.newDirectBuffer;
import static io.servicetalk.utils.internal.PlatformDependent.reserveMemory;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.unreserveMemory;

final class UnreleasableUnsafeNoZeroingDirectByteBuf extends UnreleasableUnsafeDirectByteBuf {

Expand Down
1 change: 1 addition & 0 deletions servicetalk-concurrent-api-internal/build.gradle
Expand Up @@ -24,6 +24,7 @@ dependencies {
implementation project(":servicetalk-buffer-api") // Buffer based Concurrent conversions
implementation project(":servicetalk-concurrent-api")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "org.slf4j:slf4j-api:$slf4jVersion"

Expand Down
Expand Up @@ -28,10 +28,10 @@
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import javax.annotation.Nullable;

import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedSpscQueue;
import static io.servicetalk.concurrent.internal.SubscriberUtils.deliverTerminalFromSource;
import static io.servicetalk.concurrent.internal.SubscriberUtils.isRequestNValid;
import static io.servicetalk.concurrent.internal.SubscriberUtils.newExceptionForInvalidRequestN;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedSpscQueue;

/**
* A {@link Publisher} that allows for signals to be directly injected via {@link #sendOnNext(Object)},
Expand Down
2 changes: 2 additions & 0 deletions servicetalk-concurrent-api/build.gradle
Expand Up @@ -21,6 +21,7 @@ dependencies {

implementation project(":servicetalk-annotations")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "org.slf4j:slf4j-api:$slf4jVersion"

Expand All @@ -31,6 +32,7 @@ dependencies {
testImplementation "org.mockito:mockito-core:$mockitoCoreVersion"

testFixturesImplementation testFixtures(project(":servicetalk-concurrent-internal"))
testFixturesImplementation project(":servicetalk-utils-internal")
testFixturesImplementation "com.google.code.findbugs:jsr305:$jsr305Version"
testFixturesImplementation "junit:junit:$junitVersion"
testFixturesImplementation "org.hamcrest:hamcrest-library:$hamcrestVersion"
Expand Down
Expand Up @@ -16,7 +16,7 @@
package io.servicetalk.concurrent.api;

import io.servicetalk.concurrent.GracefulAutoCloseable;
import io.servicetalk.concurrent.internal.PlatformDependent;
import io.servicetalk.utils.internal.PlatformDependent;

import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
Expand Down
Expand Up @@ -29,8 +29,8 @@
import static io.servicetalk.concurrent.internal.ConcurrentUtils.CONCURRENT_EMITTING;
import static io.servicetalk.concurrent.internal.ConcurrentUtils.CONCURRENT_IDLE;
import static io.servicetalk.concurrent.internal.ConcurrentUtils.drainSingleConsumerQueueDelayThrow;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedLinkedMpscQueue;
import static io.servicetalk.concurrent.internal.TerminalNotification.complete;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedLinkedMpscQueue;

/**
* A {@link Completable} which is also a {@link Subscriber}. State of this {@link Completable} can be modified by using
Expand Down
Expand Up @@ -19,7 +19,7 @@
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;

import static io.servicetalk.concurrent.internal.ConcurrentUtils.drainSingleConsumerQueueDelayThrow;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedMpscQueue;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedMpscQueue;

/**
* A {@link RuntimeException} that allows to add {@link Throwable} instances at a lower cost than
Expand Down
Expand Up @@ -27,7 +27,7 @@
import java.util.concurrent.TimeoutException;
import javax.annotation.Nullable;

import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;

final class DefaultBlockingIterableProcessor<T> implements BlockingIterable.Processor<T> {
private static final Object NULL_MASK = new Object();
Expand Down
Expand Up @@ -37,7 +37,7 @@
import static io.servicetalk.concurrent.api.PublishAndSubscribeOnPublishers.deliverOnSubscribeAndOnError;
import static io.servicetalk.concurrent.api.SubscriberApiUtils.NULL_TOKEN;
import static io.servicetalk.concurrent.internal.ConcurrentSubscription.wrap;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.lang.Math.min;

final class MulticastPublisher<T> extends AbstractNoHandleSubscribePublisher<T> implements Subscriber<T> {
Expand Down
Expand Up @@ -35,9 +35,9 @@
import static io.servicetalk.concurrent.api.SubscriberApiUtils.NULL_TOKEN;
import static io.servicetalk.concurrent.api.SubscriberApiUtils.SUBSCRIBER_STATE_IDLE;
import static io.servicetalk.concurrent.api.SubscriberApiUtils.SUBSCRIBER_STATE_ON_NEXT;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedSpscQueue;
import static io.servicetalk.concurrent.internal.SubscriberUtils.calculateSourceRequested;
import static io.servicetalk.concurrent.internal.SubscriberUtils.isRequestNValid;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedSpscQueue;
import static java.util.Objects.requireNonNull;

final class MulticastUtils {
Expand Down
Expand Up @@ -34,12 +34,12 @@

import static io.servicetalk.concurrent.api.SubscriberApiUtils.NULL_TOKEN;
import static io.servicetalk.concurrent.internal.ConcurrentUtils.drainSingleConsumerQueue;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedMpscQueue;
import static io.servicetalk.concurrent.internal.SubscriberUtils.calculateSourceRequested;
import static io.servicetalk.concurrent.internal.SubscriberUtils.checkDuplicateSubscription;
import static io.servicetalk.concurrent.internal.SubscriberUtils.isRequestNValid;
import static io.servicetalk.concurrent.internal.SubscriberUtils.trySetTerminal;
import static io.servicetalk.concurrent.internal.TerminalNotification.complete;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedMpscQueue;
import static java.lang.Math.min;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
Expand Down
Expand Up @@ -29,7 +29,7 @@
import static io.servicetalk.concurrent.internal.ConcurrentUtils.CONCURRENT_EMITTING;
import static io.servicetalk.concurrent.internal.ConcurrentUtils.CONCURRENT_IDLE;
import static io.servicetalk.concurrent.internal.ConcurrentUtils.drainSingleConsumerQueueDelayThrow;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedLinkedMpscQueue;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedLinkedMpscQueue;

/**
* A {@link Single} which is also a {@link Subscriber}. State of this {@link Single} can be modified by using the
Expand Down
Expand Up @@ -32,7 +32,7 @@
import javax.annotation.Nullable;

import static io.servicetalk.concurrent.internal.DeliberateException.DELIBERATE_EXCEPTION;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.hamcrest.Matchers.instanceOf;
Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package io.servicetalk.concurrent.api;

import io.servicetalk.concurrent.internal.PlatformDependent;
import io.servicetalk.utils.internal.PlatformDependent;

import java.util.ArrayList;
import java.util.Collection;
Expand Down
2 changes: 1 addition & 1 deletion servicetalk-concurrent-internal/build.gradle
Expand Up @@ -20,8 +20,8 @@ dependencies {
api project(":servicetalk-concurrent")

implementation project(":servicetalk-annotations")
implementation project(":servicetalk-utils-internal")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "org.jctools:jctools-core:$jcToolsVersion"
implementation "org.slf4j:slf4j-api:$slf4jVersion"

testImplementation project(":servicetalk-test-resources")
Expand Down
Expand Up @@ -18,7 +18,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.lang.Thread.currentThread;

/**
Expand Down
Expand Up @@ -33,8 +33,8 @@

import static io.servicetalk.concurrent.Cancellable.IGNORE_CANCEL;
import static io.servicetalk.concurrent.internal.EmptySubscription.EMPTY_SUBSCRIPTION;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedSpscQueue;
import static io.servicetalk.concurrent.internal.SubscriberUtils.isRequestNValid;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedSpscQueue;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater;

Expand Down
Expand Up @@ -35,10 +35,10 @@

import static io.servicetalk.concurrent.Cancellable.IGNORE_CANCEL;
import static io.servicetalk.concurrent.internal.EmptySubscription.EMPTY_SUBSCRIPTION;
import static io.servicetalk.concurrent.internal.PlatformDependent.newUnboundedSpscQueue;
import static io.servicetalk.concurrent.internal.SubscriberUtils.isRequestNValid;
import static io.servicetalk.concurrent.internal.TerminalNotification.complete;
import static io.servicetalk.concurrent.internal.TerminalNotification.error;
import static io.servicetalk.utils.internal.PlatformDependent.newUnboundedSpscQueue;
import static java.lang.System.arraycopy;
import static java.lang.Thread.currentThread;
import static java.util.Objects.requireNonNull;
Expand Down
2 changes: 1 addition & 1 deletion servicetalk-data-jackson/build.gradle
Expand Up @@ -23,7 +23,7 @@ dependencies {

implementation project(":servicetalk-annotations")
implementation project(":servicetalk-concurrent-api-internal")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation project(":servicetalk-serialization-api")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"

Expand Down
Expand Up @@ -33,7 +33,7 @@
import java.io.IOException;

import static io.servicetalk.buffer.api.Buffer.asOutputStream;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.util.Objects.requireNonNull;

/**
Expand Down
1 change: 1 addition & 0 deletions servicetalk-grpc-api/build.gradle
Expand Up @@ -26,6 +26,7 @@ dependencies {
implementation project(":servicetalk-annotations")
implementation project(":servicetalk-concurrent-api-internal")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation "org.slf4j:slf4j-api:$slf4jVersion"
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "com.google.protobuf:protobuf-java:$protobufVersion"
Expand Down
Expand Up @@ -37,7 +37,7 @@
import static io.servicetalk.concurrent.Cancellable.IGNORE_CANCEL;
import static io.servicetalk.concurrent.api.Publisher.from;
import static io.servicetalk.concurrent.api.SourceAdapters.toSource;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.util.Objects.requireNonNull;

final class GrpcRouteConversions {
Expand Down
1 change: 1 addition & 0 deletions servicetalk-grpc-netty/build.gradle
Expand Up @@ -32,6 +32,7 @@ dependencies {
testImplementation project(":servicetalk-concurrent-api-internal")
testImplementation project(":servicetalk-grpc-protobuf")
testImplementation project(":servicetalk-test-resources")
testImplementation project(":servicetalk-utils-internal")
testImplementation "io.grpc:grpc-core:$grpcVersion"
testImplementation("io.grpc:grpc-netty:$grpcVersion") {
exclude group: "io.netty"
Expand Down
Expand Up @@ -67,9 +67,9 @@
import static io.servicetalk.concurrent.api.AsyncCloseables.newCompositeCloseable;
import static io.servicetalk.concurrent.api.SourceAdapters.toSource;
import static io.servicetalk.concurrent.internal.DeliberateException.DELIBERATE_EXCEPTION;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.transport.netty.internal.AddressUtils.localAddress;
import static io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.hamcrest.MatcherAssert.assertThat;
Expand Down
Expand Up @@ -26,7 +26,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.lang.Thread.currentThread;

final class BlockingUtils {
Expand Down
Expand Up @@ -32,8 +32,8 @@
import javax.annotation.Nullable;

import static io.servicetalk.concurrent.api.SourceAdapters.toSource;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.http.api.BlockingUtils.futureGetCancelOnInterrupt;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater;

Expand Down
Expand Up @@ -54,14 +54,14 @@
import static io.servicetalk.concurrent.api.Publisher.from;
import static io.servicetalk.concurrent.api.SourceAdapters.toSource;
import static io.servicetalk.concurrent.internal.DeliberateException.DELIBERATE_EXCEPTION;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.http.api.HttpApiConversions.toStreamingHttpService;
import static io.servicetalk.http.api.HttpHeaderNames.TRAILER;
import static io.servicetalk.http.api.HttpProtocolVersion.HTTP_1_1;
import static io.servicetalk.http.api.HttpResponseStatus.NO_CONTENT;
import static io.servicetalk.http.api.HttpResponseStatus.OK;
import static io.servicetalk.http.api.HttpSerializationProviders.textDeserializer;
import static io.servicetalk.http.api.HttpSerializationProviders.textSerializer;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
Expand Down
1 change: 1 addition & 0 deletions servicetalk-http-netty/build.gradle
Expand Up @@ -41,6 +41,7 @@ dependencies {
testImplementation testFixtures(project(":servicetalk-transport-netty-internal"))
testImplementation project(":servicetalk-data-jackson")
testImplementation project(":servicetalk-test-resources")
testImplementation project(":servicetalk-utils-internal")
testImplementation "io.netty:netty-transport-native-unix-common:$nettyVersion"
testImplementation "io.netty:netty-tcnative-boringssl-static:$tcnativeVersion"
testImplementation "junit:junit:$junitVersion"
Expand Down
Expand Up @@ -42,7 +42,6 @@
import java.util.concurrent.atomic.AtomicReference;

import static io.servicetalk.buffer.api.EmptyBuffer.EMPTY_BUFFER;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.http.api.HttpHeaderNames.TRAILER;
import static io.servicetalk.http.api.HttpProtocolVersion.HTTP_1_1;
import static io.servicetalk.http.api.HttpResponseStatus.ACCEPTED;
Expand All @@ -51,6 +50,7 @@
import static io.servicetalk.http.api.HttpSerializationProviders.textSerializer;
import static io.servicetalk.transport.netty.internal.AddressUtils.localAddress;
import static io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static java.util.Arrays.asList;
import static java.util.concurrent.TimeUnit.SECONDS;
Expand Down
Expand Up @@ -18,7 +18,6 @@
import io.servicetalk.buffer.api.Buffer;
import io.servicetalk.concurrent.api.Completable;
import io.servicetalk.concurrent.api.Single;
import io.servicetalk.concurrent.internal.PlatformDependent;
import io.servicetalk.concurrent.internal.ServiceTalkTestTimeout;
import io.servicetalk.http.api.BlockingHttpClient;
import io.servicetalk.http.api.DefaultHttpHeadersFactory;
Expand All @@ -32,6 +31,7 @@
import io.servicetalk.http.api.TrailersTransformer;
import io.servicetalk.transport.api.ServerContext;
import io.servicetalk.transport.netty.internal.AddressUtils;
import io.servicetalk.utils.internal.PlatformDependent;

import org.junit.Rule;
import org.junit.Test;
Expand Down
Expand Up @@ -57,14 +57,14 @@
import static io.servicetalk.concurrent.api.Executors.immediate;
import static io.servicetalk.concurrent.api.Executors.newCachedThreadExecutor;
import static io.servicetalk.concurrent.api.Single.succeeded;
import static io.servicetalk.concurrent.internal.PlatformDependent.throwException;
import static io.servicetalk.http.api.HttpExecutionStrategies.customStrategyBuilder;
import static io.servicetalk.http.api.HttpExecutionStrategies.defaultStrategy;
import static io.servicetalk.http.api.HttpExecutionStrategies.noOffloadsStrategy;
import static io.servicetalk.http.netty.InvokingThreadsRecorder.IO_EXECUTOR_NAME_PREFIX;
import static io.servicetalk.http.netty.InvokingThreadsRecorder.noStrategy;
import static io.servicetalk.http.netty.InvokingThreadsRecorder.userStrategy;
import static io.servicetalk.http.netty.InvokingThreadsRecorder.userStrategyNoVerify;
import static io.servicetalk.utils.internal.PlatformDependent.throwException;
import static java.lang.Character.isDigit;
import static java.util.Arrays.asList;
import static java.util.Objects.requireNonNull;
Expand Down
1 change: 1 addition & 0 deletions servicetalk-transport-netty-internal/build.gradle
Expand Up @@ -25,6 +25,7 @@ dependencies {
implementation project(":servicetalk-annotations")
implementation project(":servicetalk-concurrent-api-internal")
implementation project(":servicetalk-concurrent-internal")
implementation project(":servicetalk-utils-internal")
implementation "com.google.code.findbugs:jsr305:$jsr305Version"
implementation "io.netty:netty-transport-native-epoll:$nettyVersion:linux-x86_64"
implementation "io.netty:netty-transport-native-kqueue:$nettyVersion:osx-x86_64"
Expand Down

0 comments on commit 707d8be

Please sign in to comment.