feat(新增): 🚀 测试出栈入栈
This commit is contained in:
parent
995953b40c
commit
96b9935b08
|
@ -0,0 +1,47 @@
|
||||||
|
package cn.bunny.demo6;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBufAllocator;
|
||||||
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||||
|
import io.netty.channel.ChannelOutboundHandlerAdapter;
|
||||||
|
import io.netty.channel.ChannelPromise;
|
||||||
|
import io.netty.channel.embedded.EmbeddedChannel;
|
||||||
|
|
||||||
|
public class TestEmbedded {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ChannelInboundHandlerAdapter h1 = new ChannelInboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
||||||
|
System.out.println(1);
|
||||||
|
ctx.fireChannelRead(msg); // 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ChannelInboundHandlerAdapter h2 = new ChannelInboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
||||||
|
System.out.println(2);
|
||||||
|
ctx.channel().write(msg); // 2
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ChannelOutboundHandlerAdapter h3 = new ChannelOutboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void write(ChannelHandlerContext ctx, Object msg,
|
||||||
|
ChannelPromise promise) {
|
||||||
|
System.out.println(4);
|
||||||
|
ctx.write(msg, promise); // 3
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ChannelOutboundHandlerAdapter h4 = new ChannelOutboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void write(ChannelHandlerContext ctx, Object msg,
|
||||||
|
ChannelPromise promise) {
|
||||||
|
System.out.println(5);
|
||||||
|
ctx.write(msg, promise); // 4
|
||||||
|
}
|
||||||
|
};
|
||||||
|
EmbeddedChannel channel = new EmbeddedChannel(h1, h2, h3, h4);
|
||||||
|
channel.writeInbound(ByteBufAllocator.DEFAULT.buffer().writeBytes("hello world".getBytes()));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package cn.bunny.demo6;
|
||||||
|
|
||||||
|
import io.netty.channel.EventLoop;
|
||||||
|
import io.netty.channel.nio.NioEventLoopGroup;
|
||||||
|
import io.netty.util.concurrent.DefaultPromise;
|
||||||
|
import io.netty.util.concurrent.Promise;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class TestNettyPromise {
|
||||||
|
public static void main(String[] args) throws ExecutionException, InterruptedException {
|
||||||
|
// 准备EventLoop 对象
|
||||||
|
EventLoop eventLoop = new NioEventLoopGroup().next();
|
||||||
|
// 可以创建promise 结果容器
|
||||||
|
Promise<Integer> promise = new DefaultPromise<>(eventLoop);
|
||||||
|
|
||||||
|
new Thread(() -> {
|
||||||
|
// 任意线程进行计算
|
||||||
|
System.out.println("开始计算...");
|
||||||
|
// 计算完成后向promise填充结果
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
promise.setSuccess(80);
|
||||||
|
}).start();
|
||||||
|
// 除了可以等待结果,也可以处理异常
|
||||||
|
log.debug("等待结果...");
|
||||||
|
log.debug("结果是:{}", promise.get());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package cn.bunny.demo6;
|
||||||
|
|
||||||
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
|
import io.netty.channel.*;
|
||||||
|
import io.netty.channel.nio.NioEventLoopGroup;
|
||||||
|
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||||
|
import io.netty.channel.socket.nio.NioSocketChannel;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class TestPipelineDemo {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new ServerBootstrap()
|
||||||
|
.group(new NioEventLoopGroup())
|
||||||
|
.channel(NioServerSocketChannel.class)
|
||||||
|
.childHandler(new ChannelInitializer<NioSocketChannel>() {
|
||||||
|
protected void initChannel(NioSocketChannel ch) {
|
||||||
|
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
||||||
|
System.out.println(1);
|
||||||
|
ctx.fireChannelRead(msg); // 1
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
||||||
|
System.out.println(2);
|
||||||
|
ctx.fireChannelRead(msg); // 2
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
||||||
|
System.out.println(3);
|
||||||
|
ctx.channel().write(msg); // 3
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ch.pipeline().addLast(new ChannelOutboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void write(ChannelHandlerContext ctx, Object msg,
|
||||||
|
ChannelPromise promise) {
|
||||||
|
System.out.println(4);
|
||||||
|
ctx.write(msg, promise); // 4
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ch.pipeline().addLast(new ChannelOutboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void write(ChannelHandlerContext ctx, Object msg,
|
||||||
|
ChannelPromise promise) {
|
||||||
|
System.out.println(5);
|
||||||
|
ctx.write(msg, promise); // 5
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ch.pipeline().addLast(new ChannelOutboundHandlerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void write(ChannelHandlerContext ctx, Object msg,
|
||||||
|
ChannelPromise promise) {
|
||||||
|
System.out.println(6);
|
||||||
|
ctx.write(msg, promise); // 6
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.bind(8080);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue