Skip to content
This repository was archived by the owner on May 4, 2019. It is now read-only.

Commit e86c100

Browse files
committed
Merge branch 'develop' of github.com:netifi-proteus/proteus-java into migrate-to-rsocket-rpc
2 parents a1260d1 + 1767728 commit e86c100

File tree

3 files changed

+42
-16
lines changed

3 files changed

+42
-16
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Netifi Proteus Java
22

3-
<a href='https://travis-ci.org/netifi-proteus/proteus-java'><img src='https://travis-ci.org/netifi-proteus/proteus-java.svg?branch=master'></a>
3+
[![Join the chat at https://gitter.im/netifi/general](https://badges.gitter.im/netifi/general.svg)](https://gitter.im/netifi/general) <a href='https://travis-ci.org/netifi-proteus/proteus-java'><img src='https://travis-ci.org/netifi-proteus/proteus-java.svg?branch=master'></a>
44

55

66
## Build from Source

client/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ dependencies {
1515

1616
compile 'com.typesafe:config:1.3.2'
1717
compile 'com.google.guava:guava:22.0'
18+
compile 'io.netty:netty-tcnative:2.0.12.Final:linux-x86_64'
1819

1920
testCompile 'io.micrometer:micrometer-registry-atlas:1.0.3'
2021
testProtobuf 'io.rsocket.rpc:core-idl:0.1.2'

client/src/main/java/io/netifi/proteus/Proteus.java

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package io.netifi.proteus;
22

3-
import io.micrometer.core.instrument.MeterRegistry;
43
import io.netifi.proteus.rsocket.ProteusSocket;
54
import io.rsocket.rpc.rsocket.RequestHandlingRSocket;
65
import io.rsocket.rpc.RSocketRpcService;
76
import io.netty.buffer.ByteBuf;
87
import io.netty.buffer.Unpooled;
8+
import io.netty.handler.ssl.OpenSsl;
9+
import io.netty.handler.ssl.SslContext;
10+
import io.netty.handler.ssl.SslContextBuilder;
11+
import io.netty.handler.ssl.SslProvider;
12+
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
913
import io.opentracing.Tracer;
1014
import io.rsocket.Closeable;
1115
import io.rsocket.transport.ClientTransport;
1216
import io.rsocket.transport.netty.client.TcpClientTransport;
1317
import org.slf4j.Logger;
1418
import org.slf4j.LoggerFactory;
19+
import reactor.core.Exceptions;
1520
import reactor.core.publisher.Mono;
1621
import reactor.core.publisher.MonoProcessor;
22+
import reactor.ipc.netty.tcp.TcpClient;
1723

1824
import java.net.InetSocketAddress;
1925
import java.net.SocketAddress;
@@ -135,10 +141,7 @@ public static class Builder {
135141
private int missedAcks = DefaultBuilderConfig.getMissedAcks();
136142
private DestinationNameFactory destinationNameFactory;
137143

138-
private MeterRegistry registry = null;
139-
private int batchSize = DefaultBuilderConfig.getBatchSize();
140-
private Function<SocketAddress, ClientTransport> clientTransportFactory =
141-
address -> TcpClientTransport.create((InetSocketAddress) address);
144+
private Function<SocketAddress, ClientTransport> clientTransportFactory = null;
142145
private int poolSize = Runtime.getRuntime().availableProcessors();
143146
private Supplier<Tracer> tracerSupplier = () -> null;
144147

@@ -153,13 +156,8 @@ public Builder poolSize(int poolSize) {
153156
return this;
154157
}
155158

156-
public Builder metricBatchSize(int batchSize) {
157-
this.batchSize = batchSize;
158-
return this;
159-
}
160-
161159
public Builder keepalive(boolean useKeepAlive) {
162-
this.keepalive = keepalive;
160+
this.keepalive = useKeepAlive;
163161
return this;
164162
}
165163

@@ -197,9 +195,7 @@ public Builder seedAddresses(Collection<SocketAddress> addresses) {
197195
if (addresses instanceof List) {
198196
this.seedAddresses = (List<SocketAddress>) addresses;
199197
} else {
200-
List<SocketAddress> list = new ArrayList<>();
201-
list.addAll(addresses);
202-
this.seedAddresses = list;
198+
this.seedAddresses = new ArrayList<>(addresses);
203199
}
204200

205201
return this;
@@ -246,6 +242,35 @@ public Proteus build() {
246242
Objects.requireNonNull(accessToken, "account token is required");
247243
Objects.requireNonNull(group, "group is required");
248244

245+
if (clientTransportFactory == null) {
246+
logger.info("Client transport factory not provided; using TCP transport.");
247+
try {
248+
final SslProvider sslProvider;
249+
if (OpenSsl.isAvailable()) {
250+
logger.info("Native SSL provider is available; will use native provider.");
251+
sslProvider = SslProvider.OPENSSL_REFCNT;
252+
} else {
253+
logger.info("Native SSL provider not available; will use JDK SSL provider.");
254+
sslProvider = SslProvider.JDK;
255+
}
256+
final SslContext sslContext =
257+
SslContextBuilder.forClient()
258+
.trustManager(InsecureTrustManagerFactory.INSTANCE)
259+
.sslProvider(sslProvider)
260+
.build();
261+
clientTransportFactory = address -> {
262+
TcpClient client =
263+
TcpClient.create(
264+
opts ->
265+
opts.connectAddress(() -> address)
266+
.sslContext(sslContext));
267+
return TcpClientTransport.create(client);
268+
};
269+
} catch (Exception sslException) {
270+
throw Exceptions.bubble(sslException);
271+
}
272+
}
273+
249274
this.accessTokenBytes = Base64.getDecoder().decode(accessToken);
250275

251276
if (destinationNameFactory == null) {
@@ -260,7 +285,7 @@ public Proteus build() {
260285
if (seedAddresses == null) {
261286
Objects.requireNonNull(host, "host is required");
262287
Objects.requireNonNull(port, "port is required");
263-
socketAddresses = Arrays.asList(InetSocketAddress.createUnresolved(host, port));
288+
socketAddresses = Collections.singletonList(InetSocketAddress.createUnresolved(host, port));
264289
} else {
265290
socketAddresses = seedAddresses;
266291
}

0 commit comments

Comments
 (0)