1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.mina.examples.echoserver;
20
21 import org.apache.mina.common.ByteBuffer;
22 import org.apache.mina.common.IdleStatus;
23 import org.apache.mina.common.IoHandler;
24 import org.apache.mina.common.IoHandlerAdapter;
25 import org.apache.mina.common.IoSession;
26 import org.apache.mina.filter.SSLFilter;
27 import org.apache.mina.transport.socket.nio.SocketSession;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 /***
32 * {@link IoHandler} implementation for echo server.
33 *
34 * @author The Apache Directory Project (dev@directory.apache.org)
35 * @version $Rev: 355016 $, $Date: 2005-12-08 16:00:30 +0900 (Thu, 08 Dec 2005) $,
36 */
37 public class EchoProtocolHandler extends IoHandlerAdapter
38 {
39 private static final Logger log = LoggerFactory.getLogger( EchoProtocolHandler.class );
40
41 public void sessionCreated( IoSession session )
42 {
43 if( session instanceof SocketSession )
44 {
45 ( ( SocketSession ) session ).setSessionReceiveBufferSize( 2048 );
46 }
47
48 session.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
49
50
51 session.setAttribute( SSLFilter.USE_NOTIFICATION );
52 }
53
54 public void sessionIdle( IoSession session, IdleStatus status )
55 {
56 log.info(
57 "*** IDLE #" +
58 session.getIdleCount( IdleStatus.BOTH_IDLE ) +
59 " ***" );
60 }
61
62 public void exceptionCaught( IoSession session, Throwable cause )
63 {
64 cause.printStackTrace();
65 session.close();
66 }
67
68 public void messageReceived( IoSession session, Object message ) throws Exception
69 {
70 if( !( message instanceof ByteBuffer ) )
71 {
72 return;
73 }
74
75 ByteBuffer rb = ( ByteBuffer ) message;
76
77 ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
78 wb.put( rb );
79 wb.flip();
80 session.write( wb );
81 }
82 }