View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  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,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.mina.service.idlechecker;
20  
21  import org.apache.mina.session.AbstractIoSession;
22  
23  /**
24   * Utility for checking detecting idle sessions.
25   * 
26   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
27   */
28  public interface IdleChecker {
29  
30      /**
31       * Inform the IdleCheker a session have a write event
32       * 
33       * @param session the session with the write event
34       * @param time the data in ms (unix time) of the event
35       */
36      void sessionWritten(AbstractIoSession session, long time);
37  
38      /**
39       * Inform the IdleCheker a session have a read event
40       * 
41       * @param session the session with the read event
42       * @param time the data in ms (unix time) of the event
43       */
44      void sessionRead(AbstractIoSession session, long time);
45  
46      /**
47       * Find idle session, to be called for each select() call.
48       * 
49       * @param time current unix time in ms
50       * @return the number of idle event detected
51       */
52      int processIdleSession(long time);
53  
54      /**
55       * Start the idle checker inner threads
56       */
57      void start();
58  
59      /**
60       * Stop the idle checker.
61       */
62      void destroy();
63  }