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.apache.mina.filter.ssl.SslFilter;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31
32
33
34
35
36
37 public class EchoProtocolHandler extends IoHandlerAdapter {
38 private final Logger logger = LoggerFactory.getLogger(getClass());
39
40 @Override
41 public void sessionCreated(IoSession session) {
42 session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
43
44
45 session.setAttribute(SslFilter.USE_NOTIFICATION);
46 }
47
48 @Override
49 public void sessionClosed(IoSession session) throws Exception {
50 logger.info("CLOSED");
51 }
52
53 @Override
54 public void sessionOpened(IoSession session) throws Exception {
55 logger.info("OPENED");
56 }
57
58 @Override
59 public void sessionIdle(IoSession session, IdleStatus status) {
60 logger.info("*** IDLE #" + session.getIdleCount(IdleStatus.BOTH_IDLE) + " ***");
61 }
62
63 @Override
64 public void exceptionCaught(IoSession session, Throwable cause) {
65 session.close();
66 }
67
68 @Override
69 public void messageReceived(IoSession session, Object message)
70 throws Exception {
71
72 session.write(((IoBuffer) message).duplicate());
73 }
74 }