View Javadoc

1   /*
2    *   @(#) $Id: EchoProtocolHandler.java 332218 2005-11-10 03:52:42Z trustin $
3    *
4    *   Copyright 2004 The Apache Software Foundation
5    *
6    *   Licensed under the Apache License, Version 2.0 (the "License");
7    *   you may not use this file except in compliance with the License.
8    *   You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing, software
13   *   distributed under the License is distributed on an "AS IS" BASIS,
14   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *   See the License for the specific language governing permissions and
16   *   limitations under the License.
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          // Write the received data back to remote peer
68          ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
69          wb.put( rb );
70          wb.flip();
71          session.write( wb, null );
72      }
73  }