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 }