1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.discard;
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.ChannelEvent;
24 import org.jboss.netty.channel.ChannelHandlerContext;
25 import org.jboss.netty.channel.ChannelStateEvent;
26 import org.jboss.netty.channel.ExceptionEvent;
27 import org.jboss.netty.channel.MessageEvent;
28 import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
29
30
31
32
33
34
35
36
37
38 public class DiscardServerHandler extends SimpleChannelUpstreamHandler {
39
40 private static final Logger logger = Logger.getLogger(
41 DiscardServerHandler.class.getName());
42
43 private final AtomicLong transferredBytes = new AtomicLong();
44
45 public long getTransferredBytes() {
46 return transferredBytes.get();
47 }
48
49 @Override
50 public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
51 if (e instanceof ChannelStateEvent) {
52 logger.info(e.toString());
53 }
54
55
56 super.handleUpstream(ctx, e);
57 }
58
59 @Override
60 public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
61
62 transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes());
63 }
64
65 @Override
66 public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
67
68 logger.log(
69 Level.WARNING,
70 "Unexpected exception from downstream.",
71 e.getCause());
72 e.getChannel().close();
73 }
74 }