/*
 * Copyright 2012 The Netty Project
 *
 * The Netty Project licenses this file to you under the Apache License,
 * version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */
package io.netty.channel;

ChannelHandler which adds callbacks for state changes. This allows the user to hook in to state changes easily.
/** * {@link ChannelHandler} which adds callbacks for state changes. This allows the user * to hook in to state changes easily. */
public interface ChannelInboundHandler extends ChannelHandler {
The Channel of the ChannelHandlerContext was registered with its EventLoop
/** * The {@link Channel} of the {@link ChannelHandlerContext} was registered with its {@link EventLoop} */
void channelRegistered(ChannelHandlerContext ctx) throws Exception;
The Channel of the ChannelHandlerContext was unregistered from its EventLoop
/** * The {@link Channel} of the {@link ChannelHandlerContext} was unregistered from its {@link EventLoop} */
void channelUnregistered(ChannelHandlerContext ctx) throws Exception;
The Channel of the ChannelHandlerContext is now active
/** * The {@link Channel} of the {@link ChannelHandlerContext} is now active */
void channelActive(ChannelHandlerContext ctx) throws Exception;
The Channel of the ChannelHandlerContext was registered is now inactive and reached its end of lifetime.
/** * The {@link Channel} of the {@link ChannelHandlerContext} was registered is now inactive and reached its * end of lifetime. */
void channelInactive(ChannelHandlerContext ctx) throws Exception;
Invoked when the current Channel has read a message from the peer.
/** * Invoked when the current {@link Channel} has read a message from the peer. */
void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception;
Invoked when the last message read by the current read operation has been consumed by channelRead(ChannelHandlerContext, Object). If ChannelOption.AUTO_READ is off, no further attempt to read an inbound data from the current Channel will be made until ChannelHandlerContext.read() is called.
/** * Invoked when the last message read by the current read operation has been consumed by * {@link #channelRead(ChannelHandlerContext, Object)}. If {@link ChannelOption#AUTO_READ} is off, no further * attempt to read an inbound data from the current {@link Channel} will be made until * {@link ChannelHandlerContext#read()} is called. */
void channelReadComplete(ChannelHandlerContext ctx) throws Exception;
Gets called if an user event was triggered.
/** * Gets called if an user event was triggered. */
void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception;
Gets called once the writable state of a Channel changed. You can check the state with Channel.isWritable().
/** * Gets called once the writable state of a {@link Channel} changed. You can check the state with * {@link Channel#isWritable()}. */
void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception;
Gets called if a Throwable was thrown.
/** * Gets called if a {@link Throwable} was thrown. */
@Override @SuppressWarnings("deprecation") void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception; }