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.SessionConfig;
24 import org.apache.mina.io.IoHandler;
25 import org.apache.mina.io.IoHandlerAdapter;
26 import org.apache.mina.io.IoSession;
27 import org.apache.mina.io.socket.SocketSessionConfig;
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: 332218 $, $Date: 2005-11-10 12:52:42 +0900 $,
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 SessionConfig cfg = session.getConfig();
44 if( cfg instanceof SocketSessionConfig )
45 {
46 ( ( SocketSessionConfig ) cfg ).setSessionReceiveBufferSize( 2048 );
47 }
48
49 cfg.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
50 }
51
52 public void sessionIdle( IoSession session, IdleStatus status )
53 {
54 log.info(
55 "*** IDLE #" +
56 session.getIdleCount( IdleStatus.BOTH_IDLE ) +
57 " ***" );
58 }
59
60 public void exceptionCaught( IoSession session, Throwable cause )
61 {
62 session.close();
63 }
64
65 public void dataRead( IoSession session, ByteBuffer rb )
66 {
67
68 ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
69 wb.put( rb );
70 wb.flip();
71 session.write( wb, null );
72 }
73 }