View Javadoc

1   /*
2    *   @(#) $Id: ProtocolSessionManagerFilterChain.java 210062 2005-07-11 03:52:38Z 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.protocol;
20  
21  import org.apache.mina.common.IdleStatus;
22  
23  /***
24   * An {@link ProtocolFilterChain} that forwards all events
25   * except <tt>filterWrite</tt> to the {@link ProtocolSessionFilterChain}
26   * of the recipient session.
27   * <p>
28   * This filter chain is used by implementations of {@link ProtocolSessionManager}s.
29   * 
30   * @author The Apache Directory Project (dev@directory.apache.org)
31   * @author Trustin Lee (trustin@apache.org)
32   * @version $Rev: 210062 $, $Date: 2005-07-11 12:52:38 +0900 $
33   */
34  public abstract class ProtocolSessionManagerFilterChain extends AbstractProtocolFilterChain {
35  
36      private final ProtocolSessionManager manager;
37  
38      protected ProtocolSessionManagerFilterChain( ProtocolSessionManager manager )
39      {
40          this.manager = manager;
41      }
42      
43      public ProtocolSessionManager getManager()
44      {
45          return manager;
46      }
47      
48      protected ProtocolFilter createTailFilter()
49      {
50          return new ProtocolFilter()
51          {
52              public void sessionOpened( NextFilter nextFilter, ProtocolSession session )
53              {
54                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionOpened( session );
55              }
56  
57              public void sessionClosed( NextFilter nextFilter, ProtocolSession session )
58              {
59                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionClosed( session );
60              }
61  
62              public void sessionIdle( NextFilter nextFilter, ProtocolSession session,
63                                      IdleStatus status )
64              {
65                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionIdle( session, status );
66              }
67  
68              public void exceptionCaught( NextFilter nextFilter,
69                                          ProtocolSession session, Throwable cause )
70              {
71                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).exceptionCaught( session, cause );
72              }
73  
74              public void messageReceived( NextFilter nextFilter, ProtocolSession session,
75                                           Object message )
76              {
77                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).messageReceived( session, message );
78              }
79  
80              public void messageSent( NextFilter nextFilter, ProtocolSession session,
81                                       Object message )
82              {
83                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).messageSent( session, message );
84              }
85  
86              public void filterWrite( NextFilter nextFilter,
87                                       ProtocolSession session, Object message )
88              {
89                  nextFilter.filterWrite( session, message );
90              }
91          };
92      }
93  }