1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.objectecho;
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.channel.ChannelEvent;
23 import org.jboss.netty.channel.ChannelHandlerContext;
24 import org.jboss.netty.channel.ChannelState;
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
39 public class ObjectEchoServerHandler extends SimpleChannelUpstreamHandler {
40
41 private static final Logger logger = Logger.getLogger(
42 ObjectEchoServerHandler.class.getName());
43
44 private final AtomicLong transferredMessages = new AtomicLong();
45
46 public long getTransferredMessages() {
47 return transferredMessages.get();
48 }
49
50 @Override
51 public void handleUpstream(
52 ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
53 if (e instanceof ChannelStateEvent &&
54 ((ChannelStateEvent) e).getState() != ChannelState.INTEREST_OPS) {
55 logger.info(e.toString());
56 }
57 super.handleUpstream(ctx, e);
58 }
59
60 @Override
61 public void messageReceived(
62 ChannelHandlerContext ctx, MessageEvent e) {
63
64 transferredMessages.incrementAndGet();
65 e.getChannel().write(e.getMessage());
66 }
67
68 @Override
69 public void exceptionCaught(
70 ChannelHandlerContext ctx, ExceptionEvent e) {
71 logger.log(
72 Level.WARNING,
73 "Unexpected exception from downstream.",
74 e.getCause());
75 e.getChannel().close();
76 }
77 }