From 433df608e26cba858648bd5ccffbba5e602264d0 Mon Sep 17 00:00:00 2001 From: pizihao <2335715300@qq.com> Date: Tue, 8 Nov 2022 18:13:12 +0800 Subject: [PATCH] fix : add server support for better use server --- .../cn/hippo4j/rpc/discovery/ServerPort.java | 6 ++++-- ...va => AbstractNettyClientPoolHandler.java} | 16 +++++++-------- ....java => AbstractNettyHandlerManager.java} | 16 +++++++-------- .../cn/hippo4j/rpc/model/DefaultResponse.java | 4 +++- .../java/cn/hippo4j/rpc/model/Response.java | 3 ++- ...ava => AbstractNettyServerConnection.java} | 20 +++++++++---------- .../java/cn/hippo4j/rpc/server/RPCServer.java | 2 +- .../hippo4j/rpc/support/NettyProxyCenter.java | 9 ++++++--- .../rpc/support/NettyServerSupport.java | 14 ++++++------- 9 files changed, 49 insertions(+), 41 deletions(-) rename hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/{NettyClientPoolHandler.java => AbstractNettyClientPoolHandler.java} (81%) rename hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/{NettyHandlerManager.java => AbstractNettyHandlerManager.java} (82%) rename hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/{NettyServerConnection.java => AbstractNettyServerConnection.java} (83%) diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/discovery/ServerPort.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/discovery/ServerPort.java index b53edb0d..5795058c 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/discovery/ServerPort.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/discovery/ServerPort.java @@ -18,13 +18,15 @@ package cn.hippo4j.rpc.discovery; /** - * + * Gets the top-level interface of the instance port */ +@FunctionalInterface public interface ServerPort { /** + * Gets the listening or exposed port * - * @return + * @return port */ int getPort(); diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyClientPoolHandler.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyClientPoolHandler.java similarity index 81% rename from hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyClientPoolHandler.java rename to hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyClientPoolHandler.java index 58fd002a..a0b71454 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyClientPoolHandler.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyClientPoolHandler.java @@ -33,40 +33,40 @@ import java.util.List; * Processing by the client connection pool handler to clean the buffer and define new connection properties */ @Slf4j -public class NettyClientPoolHandler extends NettyHandlerManager implements ChannelPoolHandler { +public class AbstractNettyClientPoolHandler extends AbstractNettyHandlerManager implements ChannelPoolHandler { - public NettyClientPoolHandler(List handlers) { + public AbstractNettyClientPoolHandler(List handlers) { super(handlers); } - public NettyClientPoolHandler(ChannelHandler... handlers) { + public AbstractNettyClientPoolHandler(ChannelHandler... handlers) { super(handlers); } - public NettyClientPoolHandler() { + public AbstractNettyClientPoolHandler() { super(); } @Override - public NettyClientPoolHandler addLast(String name, ChannelHandler handler) { + public AbstractNettyClientPoolHandler addLast(String name, ChannelHandler handler) { super.addLast(name, handler); return this; } @Override - public NettyClientPoolHandler addFirst(String name, ChannelHandler handler) { + public AbstractNettyClientPoolHandler addFirst(String name, ChannelHandler handler) { super.addFirst(name, handler); return this; } @Override - public NettyClientPoolHandler addLast(ChannelHandler handler) { + public AbstractNettyClientPoolHandler addLast(ChannelHandler handler) { super.addLast(handler); return this; } @Override - public NettyClientPoolHandler addFirst(ChannelHandler handler) { + public AbstractNettyClientPoolHandler addFirst(ChannelHandler handler) { super.addFirst(handler); return this; } diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyHandlerManager.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyHandlerManager.java similarity index 82% rename from hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyHandlerManager.java rename to hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyHandlerManager.java index 18b7b5d5..0460bb5e 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/NettyHandlerManager.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/AbstractNettyHandlerManager.java @@ -27,7 +27,7 @@ import java.util.stream.Collectors; /** * Processor manager for ChannelHandler in netty */ -public abstract class NettyHandlerManager implements HandlerManager { +public abstract class AbstractNettyHandlerManager implements HandlerManager { protected final List> handlerEntities; @@ -35,7 +35,7 @@ public abstract class NettyHandlerManager implements HandlerManager handlerEntities) { + protected AbstractNettyHandlerManager(List handlerEntities) { Assert.notNull(handlerEntities); this.handlerEntities = handlerEntities.stream() .filter(Objects::nonNull) @@ -43,11 +43,11 @@ public abstract class NettyHandlerManager implements HandlerManager(); } @@ -63,7 +63,7 @@ public abstract class NettyHandlerManager implements HandlerManager + * If it is true then it cannot be retrieved from obj */ boolean isErr(); diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/AbstractNettyServerConnection.java similarity index 83% rename from hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java rename to hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/AbstractNettyServerConnection.java index 6d2f556c..e3f39fc4 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/AbstractNettyServerConnection.java @@ -21,7 +21,7 @@ import cn.hippo4j.common.toolkit.Assert; import cn.hippo4j.rpc.coder.NettyDecoder; import cn.hippo4j.rpc.coder.NettyEncoder; import cn.hippo4j.rpc.discovery.ServerPort; -import cn.hippo4j.rpc.handler.NettyHandlerManager; +import cn.hippo4j.rpc.handler.AbstractNettyHandlerManager; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; @@ -38,7 +38,7 @@ import java.util.List; * adapter to the netty server */ @Slf4j -public class NettyServerConnection extends NettyHandlerManager implements ServerConnection { +public class AbstractNettyServerConnection extends AbstractNettyHandlerManager implements ServerConnection { ServerPort port; EventLoopGroup leader; @@ -47,7 +47,7 @@ public class NettyServerConnection extends NettyHandlerManager implements Server ChannelFuture future; Channel channel; - public NettyServerConnection(EventLoopGroup leader, EventLoopGroup worker, List handlers) { + public AbstractNettyServerConnection(EventLoopGroup leader, EventLoopGroup worker, List handlers) { super(handlers); Assert.notNull(leader); Assert.notNull(worker); @@ -55,15 +55,15 @@ public class NettyServerConnection extends NettyHandlerManager implements Server this.worker = worker; } - public NettyServerConnection(EventLoopGroup leader, EventLoopGroup worker, ChannelHandler... handlers) { + public AbstractNettyServerConnection(EventLoopGroup leader, EventLoopGroup worker, ChannelHandler... handlers) { this(leader, worker, (handlers != null ? Arrays.asList(handlers) : Collections.emptyList())); } - public NettyServerConnection(ChannelHandler... handlers) { + public AbstractNettyServerConnection(ChannelHandler... handlers) { this(handlers != null ? Arrays.asList(handlers) : Collections.emptyList()); } - public NettyServerConnection(List handlers) { + public AbstractNettyServerConnection(List handlers) { this(new NioEventLoopGroup(), new NioEventLoopGroup(), handlers); } @@ -118,25 +118,25 @@ public class NettyServerConnection extends NettyHandlerManager implements Server } @Override - public NettyServerConnection addLast(String name, ChannelHandler handler) { + public AbstractNettyServerConnection addLast(String name, ChannelHandler handler) { super.addLast(name, handler); return this; } @Override - public NettyServerConnection addFirst(String name, ChannelHandler handler) { + public AbstractNettyServerConnection addFirst(String name, ChannelHandler handler) { super.addFirst(name, handler); return this; } @Override - public NettyServerConnection addLast(ChannelHandler handler) { + public AbstractNettyServerConnection addLast(ChannelHandler handler) { super.addLast(handler); return this; } @Override - public NettyServerConnection addFirst(ChannelHandler handler) { + public AbstractNettyServerConnection addFirst(ChannelHandler handler) { super.addFirst(handler); return this; } diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java index bc3bcc43..f69e8393 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java @@ -29,7 +29,7 @@ public class RPCServer implements Server { ServerPort port; ServerConnection serverConnection; - public RPCServer(ServerPort port, ServerConnection serverConnection) { + public RPCServer(ServerConnection serverConnection, ServerPort port) { this.port = port; this.serverConnection = serverConnection; } diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyProxyCenter.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyProxyCenter.java index 690c8571..35fab496 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyProxyCenter.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyProxyCenter.java @@ -19,7 +19,9 @@ package cn.hippo4j.rpc.support; import cn.hippo4j.common.toolkit.IdUtil; import cn.hippo4j.common.web.exception.IllegalException; +import cn.hippo4j.rpc.client.Client; import cn.hippo4j.rpc.client.NettyClientConnection; +import cn.hippo4j.rpc.client.RPCClient; import cn.hippo4j.rpc.discovery.ServerPort; import cn.hippo4j.rpc.model.DefaultRequest; import cn.hippo4j.rpc.model.Request; @@ -54,11 +56,12 @@ public class NettyProxyCenter { */ public static T getProxy(Class cls, String host, ServerPort port, ChannelPoolHandler handler) { NettyClientConnection connection = new NettyClientConnection(host, port, handler); - return getProxy(connection, cls, host, port); + Client rpcClient = new RPCClient(connection); + return getProxy(rpcClient, cls, host, port); } @SuppressWarnings("unchecked") - public static T getProxy(NettyClientConnection connection, Class cls, String host, ServerPort port) { + public static T getProxy(Client client, Class cls, String host, ServerPort port) { boolean b = cls.isInterface(); if (!b) { throw new IllegalException(cls.getName() + "is not a Interface"); @@ -76,7 +79,7 @@ public class NettyProxyCenter { String key = host + port + clsName + methodName + IdUtil.simpleUUID(); Class[] parameterTypes = method.getParameterTypes(); Request request = new DefaultRequest(key, clsName, methodName, parameterTypes, args); - Response response = connection.connect(request); + Response response = client.connection(request); if (response == null) { return null; } diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyServerSupport.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyServerSupport.java index 27e0473b..56f22d9e 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyServerSupport.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/NettyServerSupport.java @@ -22,7 +22,7 @@ import cn.hippo4j.rpc.discovery.DefaultInstance; import cn.hippo4j.rpc.discovery.ServerPort; import cn.hippo4j.rpc.handler.HandlerManager; import cn.hippo4j.rpc.handler.NettyServerTakeHandler; -import cn.hippo4j.rpc.server.NettyServerConnection; +import cn.hippo4j.rpc.server.AbstractNettyServerConnection; import cn.hippo4j.rpc.server.RPCServer; import cn.hippo4j.rpc.server.Server; import io.netty.channel.ChannelHandler; @@ -59,11 +59,11 @@ public class NettyServerSupport implements Server { Server server; public NettyServerSupport(ServerPort serverPort, Class... classes) { - this(serverPort, new NettyServerConnection(), classes); + this(serverPort, new AbstractNettyServerConnection(), classes); } public NettyServerSupport(ServerPort serverPort, List> classes) { - this(serverPort, new NettyServerConnection(), classes); + this(serverPort, new AbstractNettyServerConnection(), classes); } public NettyServerSupport(ServerPort serverPort, HandlerManager handlerManager, Class... classes) { @@ -86,14 +86,14 @@ public class NettyServerSupport implements Server { // Register the interface that can be invoked classes.stream().filter(Class::isInterface) .forEach(cls -> ClassRegistry.put(cls.getName(), cls)); - NettyServerConnection connection = (handlerManager instanceof NettyServerConnection) - ? (NettyServerConnection) handlerManager - : new NettyServerConnection(); + AbstractNettyServerConnection connection = (handlerManager instanceof AbstractNettyServerConnection) + ? (AbstractNettyServerConnection) handlerManager + : new AbstractNettyServerConnection(); // Assign a default handler if no handler exists if (connection.isEmpty()) { connection.addLast(new NettyServerTakeHandler(new DefaultInstance())); } - server = new RPCServer(serverPort, connection); + server = new RPCServer(connection, serverPort); } @Override