View Javadoc

1   /*
2    *   @(#) $Id: ProtocolSessionManagerFilterChain.java 327113 2005-10-21 06:59:15Z 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   * @version $Rev: 327113 $, $Date: 2005-10-21 15:59:15 +0900 $
32   */
33  public abstract class ProtocolSessionManagerFilterChain extends AbstractProtocolFilterChain {
34  
35      private final ProtocolSessionManager manager;
36  
37      protected ProtocolSessionManagerFilterChain( ProtocolSessionManager manager )
38      {
39          this.manager = manager;
40      }
41      
42      public ProtocolSessionManager getManager()
43      {
44          return manager;
45      }
46      
47      protected ProtocolFilter createTailFilter()
48      {
49          return new ProtocolFilter()
50          {
51              public void sessionOpened( NextFilter nextFilter, ProtocolSession session )
52              {
53                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionOpened( session );
54              }
55  
56              public void sessionClosed( NextFilter nextFilter, ProtocolSession session )
57              {
58                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionClosed( session );
59              }
60  
61              public void sessionIdle( NextFilter nextFilter, ProtocolSession session,
62                                      IdleStatus status )
63              {
64                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).sessionIdle( session, status );
65              }
66  
67              public void exceptionCaught( NextFilter nextFilter,
68                                          ProtocolSession session, Throwable cause )
69              {
70                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).exceptionCaught( session, cause );
71              }
72  
73              public void messageReceived( NextFilter nextFilter, ProtocolSession session,
74                                           Object message )
75              {
76                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).messageReceived( session, message );
77              }
78  
79              public void messageSent( NextFilter nextFilter, ProtocolSession session,
80                                       Object message )
81              {
82                  ( ( ProtocolSessionFilterChain ) session.getFilterChain() ).messageSent( session, message );
83              }
84  
85              public void filterWrite( NextFilter nextFilter,
86                                       ProtocolSession session, Object message )
87              {
88                  nextFilter.filterWrite( session, message );
89              }
90          };
91      }
92  }