1 /* 2 * Copyright 2012 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty.channel; 17 18 import java.net.SocketAddress; 19 20 /** 21 * {@link ChannelHandler} which will get notified for IO-outbound-operations. 22 */ 23 public interface ChannelOutboundHandler extends ChannelHandler { 24 /** 25 * Called once a bind operation is made. 26 * 27 * @param ctx the {@link ChannelHandlerContext} for which the bind operation is made 28 * @param localAddress the {@link SocketAddress} to which it should bound 29 * @param promise the {@link ChannelPromise} to notify once the operation completes 30 * @throws Exception thrown if an error occurs 31 */ 32 void bind(ChannelHandlerContext ctx, SocketAddress localAddress, ChannelPromise promise) throws Exception; 33 34 /** 35 * Called once a connect operation is made. 36 * 37 * @param ctx the {@link ChannelHandlerContext} for which the connect operation is made 38 * @param remoteAddress the {@link SocketAddress} to which it should connect 39 * @param localAddress the {@link SocketAddress} which is used as source on connect 40 * @param promise the {@link ChannelPromise} to notify once the operation completes 41 * @throws Exception thrown if an error occurs 42 */ 43 void connect( 44 ChannelHandlerContext ctx, SocketAddress remoteAddress, 45 SocketAddress localAddress, ChannelPromise promise) throws Exception; 46 47 /** 48 * Called once a disconnect operation is made. 49 * 50 * @param ctx the {@link ChannelHandlerContext} for which the disconnect operation is made 51 * @param promise the {@link ChannelPromise} to notify once the operation completes 52 * @throws Exception thrown if an error occurs 53 */ 54 void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception; 55 56 /** 57 * Called once a close operation is made. 58 * 59 * @param ctx the {@link ChannelHandlerContext} for which the close operation is made 60 * @param promise the {@link ChannelPromise} to notify once the operation completes 61 * @throws Exception thrown if an error occurs 62 */ 63 void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception; 64 65 /** 66 * Called once a deregister operation is made from the current registered {@link EventLoop}. 67 * 68 * @param ctx the {@link ChannelHandlerContext} for which the close operation is made 69 * @param promise the {@link ChannelPromise} to notify once the operation completes 70 * @throws Exception thrown if an error occurs 71 */ 72 void deregister(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception; 73 74 /** 75 * Intercepts {@link ChannelHandlerContext#read()}. 76 */ 77 void read(ChannelHandlerContext ctx) throws Exception; 78 79 /** 80 * Called once a write operation is made. The write operation will write the messages through the 81 * {@link ChannelPipeline}. Those are then ready to be flushed to the actual {@link Channel} once 82 * {@link Channel#flush()} is called 83 * 84 * @param ctx the {@link ChannelHandlerContext} for which the write operation is made 85 * @param msg the message to write 86 * @param promise the {@link ChannelPromise} to notify once the operation completes 87 * @throws Exception thrown if an error occurs 88 */ 89 void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception; 90 91 /** 92 * Called once a flush operation is made. The flush operation will try to flush out all previous written messages 93 * that are pending. 94 * 95 * @param ctx the {@link ChannelHandlerContext} for which the flush operation is made 96 * @throws Exception thrown if an error occurs 97 */ 98 void flush(ChannelHandlerContext ctx) throws Exception; 99 }