1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.echo;
17
18 import java.util.concurrent.atomic.AtomicLong;
19 import java.util.logging.Level;
20 import java.util.logging.Logger;
21
22 import org.jboss.netty.buffer.ChannelBuffer;
23 import org.jboss.netty.channel.ChannelHandlerContext;
24 import org.jboss.netty.channel.ExceptionEvent;
25 import org.jboss.netty.channel.MessageEvent;
26 import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
27
28
29
30
31
32
33
34
35
36 public class EchoServerHandler extends SimpleChannelUpstreamHandler {
37
38 private static final Logger logger = Logger.getLogger(
39 EchoServerHandler.class.getName());
40
41 private final AtomicLong transferredBytes = new AtomicLong();
42
43 public long getTransferredBytes() {
44 return transferredBytes.get();
45 }
46
47 @Override
48 public void messageReceived(
49 ChannelHandlerContext ctx, MessageEvent e) {
50
51 transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes());
52 e.getChannel().write(e.getMessage());
53 }
54
55 @Override
56 public void exceptionCaught(
57 ChannelHandlerContext ctx, ExceptionEvent e) {
58
59 logger.log(
60 Level.WARNING,
61 "Unexpected exception from downstream.",
62 e.getCause());
63 e.getChannel().close();
64 }
65 }