1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.example.echoserver;
21
22 import org.apache.mina.core.buffer.IoBuffer;
23 import org.apache.mina.core.service.IoHandler;
24 import org.apache.mina.core.service.IoHandlerAdapter;
25 import org.apache.mina.core.session.IdleStatus;
26 import org.apache.mina.core.session.IoSession;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35 public class EchoProtocolHandler extends IoHandlerAdapter {
36 private final static Logger LOGGER = LoggerFactory.getLogger(EchoProtocolHandler.class);
37
38 @Override
39 public void sessionCreated(IoSession session) {
40 session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
41 }
42
43 @Override
44 public void sessionClosed(IoSession session) throws Exception {
45 LOGGER.info("CLOSED");
46 }
47
48 @Override
49 public void sessionOpened(IoSession session) throws Exception {
50 LOGGER.info("OPENED");
51 }
52
53 @Override
54 public void sessionIdle(IoSession session, IdleStatus status) {
55 LOGGER.info("*** IDLE #" + session.getIdleCount(IdleStatus.BOTH_IDLE) + " ***");
56 }
57
58 @Override
59 public void exceptionCaught(IoSession session, Throwable cause) {
60 session.closeNow();
61 }
62
63 @Override
64 public void messageReceived(IoSession session, Object message)
65 throws Exception {
66 LOGGER.info( "Received : " + message );
67
68 session.write(((IoBuffer) message).duplicate());
69 }
70 }