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   */
    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  }