ing
This commit is contained in:
parent
82719958f9
commit
842426c560
12
pom.xml
12
pom.xml
|
@ -17,14 +17,21 @@
|
||||||
<name>com.loafle.overflow.container-java</name>
|
<name>com.loafle.overflow.container-java</name>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
<commons.rpc-java.version>1.0.0-SNAPSHOT</commons.rpc-java.version>
|
||||||
<commons.server-java.version>1.0.0-SNAPSHOT</commons.server-java.version>
|
<commons.server-java.version>1.0.0-SNAPSHOT</commons.server-java.version>
|
||||||
<overflow.commons-java.version>1.0.0-SNAPSHOT</overflow.commons-java.version>
|
<overflow.commons-java.version>1.0.0-SNAPSHOT</overflow.commons-java.version>
|
||||||
<overflow.crawler-java.version>1.0.0-SNAPSHOT</overflow.crawler-java.version>
|
<overflow.crawler-java.version>1.0.0-SNAPSHOT</overflow.crawler-java.version>
|
||||||
|
|
||||||
|
<netty.version>4.1.24.Final</netty.version>
|
||||||
<spring.version>5.0.5.RELEASE</spring.version>
|
<spring.version>5.0.5.RELEASE</spring.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.loafle.commons</groupId>
|
||||||
|
<artifactId>rpc-java</artifactId>
|
||||||
|
<version>${commons.rpc-java.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.loafle.commons</groupId>
|
<groupId>com.loafle.commons</groupId>
|
||||||
<artifactId>server-java</artifactId>
|
<artifactId>server-java</artifactId>
|
||||||
|
@ -41,6 +48,11 @@
|
||||||
<version>${overflow.crawler-java.version}</version>
|
<version>${overflow.crawler-java.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.netty</groupId>
|
||||||
|
<artifactId>netty-handler</artifactId>
|
||||||
|
<version>${netty.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context</artifactId>
|
<artifactId>spring-context</artifactId>
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.loafle.overflow.container.server;
|
||||||
|
|
||||||
|
import com.loafle.commons.rpc.RPCException;
|
||||||
|
import com.loafle.commons.rpc.protocol.RPCServerCodec;
|
||||||
|
import com.loafle.commons.rpc.protocol.RPCServerRequestCodec;
|
||||||
|
import com.loafle.commons.rpc.registry.RPCInvoker;
|
||||||
|
import com.loafle.commons.server.socket.netty.handler.codec.SocketFrame;
|
||||||
|
import com.loafle.commons.server.socket.netty.handler.codec.TextSocketFrame;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import io.netty.channel.SimpleChannelInboundHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPCDecoder
|
||||||
|
*/
|
||||||
|
public class RPCServerHandler extends SimpleChannelInboundHandler<SocketFrame> {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(RPCServerHandler.class);
|
||||||
|
private RPCServerCodec serverCodec;
|
||||||
|
private RPCInvoker rpcInvoker;
|
||||||
|
|
||||||
|
public RPCServerHandler(RPCServerCodec serverCodec, RPCInvoker rpcInvoker) {
|
||||||
|
this.serverCodec = serverCodec;
|
||||||
|
this.rpcInvoker = rpcInvoker;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void channelRead0(ChannelHandlerContext ctx, SocketFrame frame) throws Exception {
|
||||||
|
if (frame instanceof TextSocketFrame) {
|
||||||
|
byte[] requestBytes = null;
|
||||||
|
RPCServerRequestCodec requestCodec = null;
|
||||||
|
Object reply = null;
|
||||||
|
RPCException error = null;
|
||||||
|
try {
|
||||||
|
requestBytes = new byte[frame.content().readableBytes()];
|
||||||
|
frame.content().readBytes(requestBytes);
|
||||||
|
|
||||||
|
requestCodec = this.serverCodec.request(requestBytes);
|
||||||
|
reply = this.rpcInvoker.invoke(requestCodec);
|
||||||
|
|
||||||
|
} catch (RPCException e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] responseBytes = requestCodec.response(reply, error);
|
||||||
|
ctx.channel().writeAndFlush(responseBytes);
|
||||||
|
} else {
|
||||||
|
throw new UnsupportedOperationException(String.format("unsupported frame type: %s", frame.getClass().getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user