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.handler.multiton; 21 22 import java.io.IOException; 23 24 import org.apache.mina.common.IdleStatus; 25 import org.apache.mina.common.IoHandler; 26 import org.apache.mina.common.IoSession; 27 28 /** 29 * A session handler without an {@link IoSession} parameter for simplicity. 30 * <p> 31 * A {@link SingleSessionIoHandler} is similar to an {@link IoHandler} with 32 * the notable difference that a {@link SingleSessionIoHandler} is used only 33 * by one session at a time. Thus, there is no {@link IoSession} parameter in 34 * the methods of this interface. 35 * </p> 36 * <p> 37 * Because events are passed to the session in order, it is possible to store 38 * conversational state as instance variables in this object. 39 * </p> 40 * 41 * @author The Apache Directory Project (mina-dev@directory.apache.org) 42 * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $ 43 */ 44 public interface SingleSessionIoHandler { 45 46 /** 47 * Invoked when the session is created. Initialize default socket parameters 48 * and user-defined attributes here. 49 * 50 * @throws Exception 51 * @see IoHandler#sessionCreated(IoSession) 52 */ 53 void sessionCreated() throws Exception; 54 55 /** 56 * Invoked when the connection is opened. This method is not invoked if the 57 * transport type is UDP. 58 * 59 * @see IoHandler#sessionOpened(IoSession) 60 */ 61 void sessionOpened() throws Exception; 62 63 /** 64 * Invoked when the connection is closed. This method is not invoked if the 65 * transport type is UDP. 66 * 67 * @see IoHandler#sessionClosed(IoSession) 68 */ 69 void sessionClosed() throws Exception; 70 71 /** 72 * Invoked when the connection is idle. Refer to {@link IdleStatus}. This 73 * method is not invoked if the transport type is UDP. 74 * 75 * @param status the type of idleness 76 * @see IoHandler#sessionIdle(IoSession, IdleStatus) 77 */ 78 void sessionIdle(IdleStatus status) throws Exception; 79 80 /** 81 * Invoked when any exception is thrown by user {@link IoHandler} 82 * implementation or by MINA. If <code>cause</code> is instanceof 83 * {@link IOException}, MINA will close the connection automatically. 84 * 85 * @param cause the caught exception 86 * @see IoHandler#exceptionCaught(IoSession, Throwable) 87 */ 88 void exceptionCaught(Throwable cause) throws Exception; 89 90 /** 91 * Invoked when protocol message is received. Implement your protocol flow 92 * here. 93 * 94 * @param message the received message 95 * @see IoHandler#messageReceived(IoSession, Object) 96 */ 97 void messageReceived(Object message) throws Exception; 98 99 /** 100 * Invoked when protocol message that user requested by 101 * {@link IoSession#write(Object)} is sent out actually. 102 * 103 * @param message the sent message 104 * @see IoHandler#messageSent(IoSession, Object) 105 */ 106 void messageSent(Object message) throws Exception; 107 108 }