1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.udt.echo.rendezvousBytes;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.ChannelFuture;
20 import io.netty.channel.ChannelInitializer;
21 import io.netty.channel.nio.NioEventLoopGroup;
22 import io.netty.channel.udt.UdtChannel;
23 import io.netty.channel.udt.nio.NioUdtProvider;
24 import io.netty.handler.logging.LogLevel;
25 import io.netty.handler.logging.LoggingHandler;
26 import io.netty.util.concurrent.DefaultThreadFactory;
27
28 import java.net.SocketAddress;
29 import java.util.concurrent.ThreadFactory;
30
31
32
33
34
35
36
37
38
39
40 public class ByteEchoPeerBase {
41
42 protected final int messageSize;
43 protected final SocketAddress myAddress;
44 protected final SocketAddress peerAddress;
45
46 public ByteEchoPeerBase(int messageSize, SocketAddress myAddress, SocketAddress peerAddress) {
47 this.messageSize = messageSize;
48 this.myAddress = myAddress;
49 this.peerAddress = peerAddress;
50 }
51
52 public void run() throws Exception {
53 final ThreadFactory connectFactory = new DefaultThreadFactory("rendezvous");
54 final NioEventLoopGroup connectGroup = new NioEventLoopGroup(1,
55 connectFactory, NioUdtProvider.BYTE_PROVIDER);
56 try {
57 final Bootstrap bootstrap = new Bootstrap();
58 bootstrap.group(connectGroup)
59 .channelFactory(NioUdtProvider.BYTE_RENDEZVOUS)
60 .handler(new ChannelInitializer<UdtChannel>() {
61 @Override
62 protected void initChannel(UdtChannel ch) throws Exception {
63 ch.pipeline().addLast(
64 new LoggingHandler(LogLevel.INFO),
65 new ByteEchoPeerHandler(messageSize));
66 }
67 });
68 final ChannelFuture future = bootstrap.connect(peerAddress, myAddress).sync();
69 future.channel().closeFuture().sync();
70 } finally {
71 connectGroup.shutdownGracefully();
72 }
73 }
74 }