1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.udt.echo.message;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.buffer.Unpooled;
20 import io.netty.channel.ChannelHandlerContext;
21 import io.netty.channel.SimpleChannelInboundHandler;
22 import io.netty.channel.udt.UdtMessage;
23 import io.netty.channel.udt.nio.NioUdtProvider;
24
25
26
27
28
29
30 public class MsgEchoClientHandler extends SimpleChannelInboundHandler<UdtMessage> {
31
32 private final UdtMessage message;
33
34 public MsgEchoClientHandler() {
35 super(false);
36 final ByteBuf byteBuf = Unpooled.buffer(MsgEchoClient.SIZE);
37 for (int i = 0; i < byteBuf.capacity(); i++) {
38 byteBuf.writeByte((byte) i);
39 }
40 message = new UdtMessage(byteBuf);
41 }
42
43 @Override
44 public void channelActive(final ChannelHandlerContext ctx) {
45 System.err.println("ECHO active " + NioUdtProvider.socketUDT(ctx.channel()).toStringOptions());
46 ctx.writeAndFlush(message);
47 }
48
49 @Override
50 public void channelRead0(ChannelHandlerContext ctx, UdtMessage msg) {
51 ctx.write(msg);
52 }
53
54 @Override
55 public void channelReadComplete(ChannelHandlerContext ctx) {
56 ctx.flush();
57 }
58
59 @Override
60 public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) {
61 cause.printStackTrace();
62 ctx.close();
63 }
64 }