66import io .netty .channel .nio .NioEventLoopGroup ;
77import io .netty .util .concurrent .DefaultThreadFactory ;
88import io .netty .util .concurrent .Future ;
9+ import io .rsocket .transport .netty .client .TcpClientTransport ;
10+ import io .rsocket .transport .netty .server .TcpServerTransport ;
911import io .scalecube .services .transport .api .ClientTransport ;
1012import io .scalecube .services .transport .api .DataCodec ;
1113import io .scalecube .services .transport .api .HeadersCodec ;
1618import java .util .Collection ;
1719import java .util .concurrent .ThreadFactory ;
1820import java .util .function .Function ;
21+ import org .slf4j .Logger ;
22+ import org .slf4j .LoggerFactory ;
1923import reactor .core .publisher .Flux ;
2024import reactor .core .publisher .Mono ;
2125import reactor .netty .FutureMono ;
2226import reactor .netty .resources .LoopResources ;
2327import reactor .netty .tcp .TcpClient ;
2428import reactor .netty .tcp .TcpServer ;
2529
26- /** RSocket service transport. */
2730public class RSocketServiceTransport implements ServiceTransport {
2831
32+ private static final Logger LOGGER = LoggerFactory .getLogger (RSocketServiceTransport .class );
33+
2934 private int numOfWorkers = Runtime .getRuntime ().availableProcessors ();
3035 private HeadersCodec headersCodec ;
3136 private Collection <DataCodec > dataCodecs ;
32- private Function <LoopResources , TcpServer > tcpServerProvider = defaultTcpServerProvider ();
33- private Function <LoopResources , TcpClient > tcpClientProvider = defaultTcpClientProvider ();
37+ private Function <LoopResources , RSocketServerTransportFactory > serverTransportFactory =
38+ defaultServerTransportFactory ();
39+ private Function <LoopResources , RSocketClientTransportFactory > clientTransportFactory =
40+ defaultClientTransportFactory ();
3441
3542 // resources
3643 private EventLoopGroup eventLoopGroup ;
@@ -52,8 +59,8 @@ private RSocketServiceTransport(RSocketServiceTransport other) {
5259 this .eventLoopGroup = other .eventLoopGroup ;
5360 this .clientLoopResources = other .clientLoopResources ;
5461 this .serverLoopResources = other .serverLoopResources ;
55- this .tcpServerProvider = other .tcpServerProvider ;
56- this .tcpClientProvider = other .tcpClientProvider ;
62+ this .serverTransportFactory = other .serverTransportFactory ;
63+ this .clientTransportFactory = other .clientTransportFactory ;
5764 }
5865
5966 /**
@@ -93,26 +100,28 @@ public RSocketServiceTransport dataCodecs(Collection<DataCodec> dataCodecs) {
93100 }
94101
95102 /**
96- * Setter for {@code tcpServerProvider }.
103+ * Setter for {@code serverTransportFactory }.
97104 *
98- * @param factory {@code TcpServer} provider function
105+ * @param serverTransportFactory serverTransportFactory
99106 * @return new {@code RSocketServiceTransport} instance
100107 */
101- public RSocketServiceTransport tcpServer (Function <LoopResources , TcpServer > factory ) {
108+ public RSocketServiceTransport serverTransportFactory (
109+ Function <LoopResources , RSocketServerTransportFactory > serverTransportFactory ) {
102110 RSocketServiceTransport rst = new RSocketServiceTransport (this );
103- rst .tcpServerProvider = factory ;
111+ rst .serverTransportFactory = serverTransportFactory ;
104112 return rst ;
105113 }
106114
107115 /**
108- * Setter for {@code tcpClientProvider }.
116+ * Setter for {@code clientTransportFactory }.
109117 *
110- * @param factory {@code TcpClient} provider function
118+ * @param clientTransportFactory clientTransportFactory
111119 * @return new {@code RSocketServiceTransport} instance
112120 */
113- public RSocketServiceTransport tcpClient (Function <LoopResources , TcpClient > factory ) {
121+ public RSocketServiceTransport clientTransportFactory (
122+ Function <LoopResources , RSocketClientTransportFactory > clientTransportFactory ) {
114123 RSocketServiceTransport rst = new RSocketServiceTransport (this );
115- rst .tcpClientProvider = factory ;
124+ rst .clientTransportFactory = clientTransportFactory ;
116125 return rst ;
117126 }
118127
@@ -125,7 +134,7 @@ public RSocketServiceTransport tcpClient(Function<LoopResources, TcpClient> fact
125134 public ClientTransport clientTransport () {
126135 return new RSocketClientTransport (
127136 new ServiceMessageCodec (headersCodec , dataCodecs ),
128- tcpClientProvider .apply (clientLoopResources ));
137+ clientTransportFactory .apply (clientLoopResources ));
129138 }
130139
131140 /**
@@ -137,7 +146,7 @@ public ClientTransport clientTransport() {
137146 public ServerTransport serverTransport () {
138147 return new RSocketServerTransport (
139148 new ServiceMessageCodec (headersCodec , dataCodecs ),
140- tcpServerProvider .apply (serverLoopResources ));
149+ serverTransportFactory .apply (serverLoopResources ));
141150 }
142151
143152 @ Override
@@ -173,14 +182,34 @@ private Mono<Void> shutdownEventLoopGroup() {
173182 return Mono .defer (() -> FutureMono .from ((Future ) eventLoopGroup .shutdownGracefully ()));
174183 }
175184
176- private Function <LoopResources , TcpServer > defaultTcpServerProvider () {
185+ private Function <LoopResources , RSocketServerTransportFactory > defaultServerTransportFactory () {
177186 return (LoopResources serverLoopResources ) ->
178- TcpServer .create ().runOn (serverLoopResources ).bindAddress (() -> new InetSocketAddress (0 ));
179- }
180-
181- private Function <LoopResources , TcpClient > defaultTcpClientProvider () {
182- return (LoopResources clientLoopResources ) ->
183- TcpClient .newConnection ().runOn (clientLoopResources );
187+ () ->
188+ TcpServerTransport .create (
189+ TcpServer .create ()
190+ .runOn (serverLoopResources )
191+ .bindAddress (() -> new InetSocketAddress (0 ))
192+ .doOnConnection (
193+ connection -> {
194+ LOGGER .debug (
195+ "[rsocket][server] Accepted connection on {}" , connection .channel ());
196+ connection .onDispose (
197+ () ->
198+ LOGGER .debug (
199+ "[rsocket][server] Connection closed on {}" ,
200+ connection .channel ()));
201+ }));
202+ }
203+
204+ private Function <LoopResources , RSocketClientTransportFactory > defaultClientTransportFactory () {
205+ return (LoopResources loopResources ) ->
206+ (RSocketClientTransportFactory )
207+ address ->
208+ TcpClientTransport .create (
209+ TcpClient .newConnection ()
210+ .host (address .host ())
211+ .port (address .port ())
212+ .runOn (loopResources ));
184213 }
185214
186215 @ Override
0 commit comments