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.core.service;
    21
    22  import java.io.IOException;
    23
    24  import org.apache.mina.core.session.IdleStatus;
    25  import org.apache.mina.core.session.IoSession;
    26
    27  /**
    28   * Handles all I/O events fired by MINA.
    29   *
    30   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
    31   *
    32   * @see IoHandlerAdapter
    33   */
    34  public interface IoHandler {
    35      /**
    36       * Invoked from an I/O processor thread when a new connection has been created.
    37       * Because this method is supposed to be called from the same thread that
    38       * handles I/O of multiple sessions, please implement this method to perform
    39       * tasks that consumes minimal amount of time such as socket parameter
    40       * and user-defined session attribute initialization.
    41       */
    42      void sessionCreated(IoSession session) throws Exception;
    43
    44      /**
    45       * Invoked when a connection has been opened.  This method is invoked after
    46       * {@link #sessionCreated(IoSession)}.  The biggest difference from
    47       * {@link #sessionCreated(IoSession)} is that it's invoked from other thread
    48       * than an I/O processor thread once thread model is configured properly.
    49       */
    50      void sessionOpened(IoSession session) throws Exception;
    51
    52      /**
    53       * Invoked when a connection is closed.
    54       */
    55      void sessionClosed(IoSession session) throws Exception;
    56
    57      /**
    58       * Invoked with the related {@link IdleStatus} when a connection becomes idle.
    59       * This method is not invoked if the transport type is UDP; it's a known bug,
    60       * and will be fixed in 2.0.
    61       */
    62      void sessionIdle(IoSession session, IdleStatus status) throws Exception;
    63
    64      /**
    65       * Invoked when any exception is thrown by user {@link IoHandler}
    66       * implementation or by MINA.  If <code>cause</code> is an instance of
    67       * {@link IOException}, MINA will close the connection automatically.
    68       */
    69      void exceptionCaught(IoSession session, Throwable cause) throws Exception;
    70
    71      /**
    72       * Invoked when a message is received.
    73       */
    74      void messageReceived(IoSession session, Object message) throws Exception;
    75
    76      /**
    77       * Invoked when a message written by {@link IoSession#write(Object)} is
    78       * sent out.
    79       */
    80      void messageSent(IoSession session, Object message) throws Exception;
    81  }