1 /* 2 * ==================================================================== 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * ==================================================================== 20 * 21 * This software consists of voluntary contributions made by many 22 * individuals on behalf of the Apache Software Foundation. For more 23 * information on the Apache Software Foundation, please see 24 * <http://www.apache.org/>. 25 * 26 */ 27 28 package org.apache.hc.core5.reactor; 29 30 import java.io.IOException; 31 import java.nio.ByteBuffer; 32 33 import org.apache.hc.core5.annotation.Internal; 34 import org.apache.hc.core5.util.Timeout; 35 36 /** 37 * IOEventHandler interface is used by I/O reactors to handle I/O events for individual 38 * I/O sessions. All methods of this interface are executed on a single dispatch thread 39 * of the I/O reactor. Therefore, it is important that event processing does not not block 40 * the I/O dispatch thread for too long, thus making the I/O reactor unable to react to 41 * other events. 42 * 43 * @since 5.0 44 */ 45 @Internal 46 public interface IOEventHandler { 47 48 /** 49 * Triggered after the given session has been just created. 50 * 51 * @param session the I/O session. 52 */ 53 void connected(IOSession session) throws IOException; 54 55 /** 56 * Triggered when the given session has input pending. 57 * 58 * @param session the I/O session. 59 */ 60 void inputReady(IOSession session, ByteBuffer src) throws IOException; 61 62 /** 63 * Triggered when the given session is ready for output. 64 * 65 * @param session the I/O session. 66 */ 67 void outputReady(IOSession session) throws IOException; 68 69 /** 70 * Triggered when the given session has timed out. 71 * 72 * @param session the I/O session. 73 * @param timeout the timeout. 74 */ 75 void timeout(IOSession session, Timeout timeout) throws IOException; 76 77 /** 78 * Triggered when the given session throws a exception. 79 * 80 * @param session the I/O session. 81 */ 82 void exception(IOSession session, Exception cause); 83 84 /** 85 * Triggered when the given session has been terminated. 86 * 87 * @param session the I/O session. 88 */ 89 void disconnected(IOSession session); 90 91 }