View Javadoc

1   /*
2    *   @(#) $Id: ReverseProtocolHandler.java 355016 2005-12-08 07:00:30Z 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.reverser;
20  
21  import org.apache.mina.common.IoFilter;
22  import org.apache.mina.common.IoHandler;
23  import org.apache.mina.common.IoHandlerAdapter;
24  import org.apache.mina.common.IoSession;
25  import org.apache.mina.filter.LoggingFilter;
26  import org.apache.mina.filter.codec.ProtocolCodecFilter;
27  import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
28  
29  /***
30   * {@link IoHandler} implementation of reverser server protocol.
31   * 
32   * @author The Apache Directory Project (dev@directory.apache.org)
33   * @version $Rev: 355016 $, $Date: 2005-12-08 16:00:30 +0900 (Thu, 08 Dec 2005) $,
34   */
35  public class ReverseProtocolHandler extends IoHandlerAdapter
36  {
37      private static IoFilter LOGGING_FILTER = new LoggingFilter();
38      private static IoFilter CODEC_FILTER =
39          new ProtocolCodecFilter( new TextLineCodecFactory() );
40  
41      public void sessionCreated( IoSession session ) throws Exception
42      {
43          session.getFilterChain().addLast( "logger", LOGGING_FILTER );
44          session.getFilterChain().addLast( "codec", CODEC_FILTER );
45      }
46  
47      public void exceptionCaught( IoSession session, Throwable cause )
48      {
49          cause.printStackTrace();
50          // Close connection when unexpected exception is caught.
51          session.close();
52      }
53  
54      public void messageReceived( IoSession session, Object message )
55      {
56          // Reverse reveiced string
57          String str = message.toString();
58          StringBuffer buf = new StringBuffer( str.length() );
59          for( int i = str.length() - 1; i >= 0; i-- )
60          {
61              buf.append( str.charAt( i ) );
62          }
63  
64          // and write it back.
65          session.write( buf.toString() );
66      }
67  }