查看本类的 API文档回源码主页即时通讯网 - 即时通讯开发者社区!
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   */
20  package org.apache.mina.common;
21  
22  import java.io.IOException;
23  
24  /**
25   * Handles all I/O events fired by MINA.
26   * 
27   * @author The Apache MINA Project (dev@mina.apache.org)
28   * @version $Rev: 562343 $, $Date: 2007-08-03 14:53:44 +0900 (Fri, 03 Aug 2007) $
29   * 
30   * @see IoHandlerAdapter
31   */
32  public interface IoHandler {
33      /**
34       * Invoked from an I/O processor thread when a new connection has been created.
35       * Because this method is supposed to be called from the same thread that
36       * handles I/O of multiple sessions, please implement this method to perform
37       * tasks that consumes minimal amount of time such as socket parameter
38       * and user-defined session attribute initialization.
39       */
40      void sessionCreated(IoSession session) throws Exception;
41  
42      /**
43       * Invoked when a connection has been opened.  This method is invoked after
44       * {@link #sessionCreated(IoSession)}.  The biggest difference from
45       * {@link #sessionCreated(IoSession)} is that it's invoked from other thread
46       * than an I/O processor thread once thread modesl is configured properly.
47       */
48      void sessionOpened(IoSession session) throws Exception;
49  
50      /**
51       * Invoked when a connection is closed.
52       */
53      void sessionClosed(IoSession session) throws Exception;
54  
55      /**
56       * Invoked with the related {@link IdleStatus} when a connection becomes idle.
57       * This method is not invoked if the transport type is UDP; it's a known bug,
58       * and will be fixed in 2.0.
59       */
60      void sessionIdle(IoSession session, IdleStatus status) throws Exception;
61  
62      /**
63       * Invoked when any exception is thrown by user {@link IoHandler}
64       * implementation or by MINA.  If <code>cause</code> is instanceof
65       * {@link IOException}, MINA will close the connection automatically.
66       */
67      void exceptionCaught(IoSession session, Throwable cause) throws Exception;
68  
69      /**
70       * Invoked when a message is received.
71       */
72      void messageReceived(IoSession session, Object message) throws Exception;
73  
74      /**
75       * Invoked when a message written by {@link IoSession#write(Object)} is
76       * sent out.
77       */
78      void messageSent(IoSession session, Object message) throws Exception;
79  }