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, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.giraph.utils; 20 21 import io.netty.channel.Channel; 22 import io.netty.channel.ChannelHandler; 23 import io.netty.channel.ChannelPipeline; 24 import io.netty.util.concurrent.EventExecutorGroup; 25 26 /** 27 * Utility class for ChannelPipeline 28 */ 29 public class PipelineUtils { 30 /** Do not instantiate. */ 31 private PipelineUtils() { } 32 33 /** 34 * Add a handler to pipeline if it is not already added 35 * and configure the handler to use an executor group based on equality 36 * of compareTo and handlerName 37 * 38 * @param handlerName string name of the handler 39 * @param handler channelhandler object 40 * @param compareTo string name to compare to for executorgroup usage check 41 * @param executor executorgroup instance 42 * @param channel netty channel 43 */ 44 public static void addLastWithExecutorCheck(String handlerName, 45 ChannelHandler handler, String compareTo, EventExecutorGroup executor, 46 Channel channel) { 47 ChannelPipeline pipeline = channel.pipeline(); 48 if (channel.pipeline().get(handlerName) != null) { 49 return; 50 } 51 if (compareTo.equals(handlerName)) { 52 pipeline.addLast(executor, handlerName, handler); 53 } else { 54 pipeline.addLast(handlerName, handler); 55 } 56 } 57 }