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.hadoop.hbase.procedure2; 20 21 import org.apache.hadoop.hbase.classification.InterfaceAudience; 22 import org.apache.hadoop.hbase.classification.InterfaceStability; 23 24 /** 25 * Keep track of the runnable procedures 26 */ 27 @InterfaceAudience.Private 28 @InterfaceStability.Evolving 29 public interface ProcedureRunnableSet { 30 /** 31 * Inserts the specified element at the front of this queue. 32 * @param proc the Procedure to add 33 */ 34 void addFront(Procedure proc); 35 36 /** 37 * Inserts the specified element at the end of this queue. 38 * @param proc the Procedure to add 39 */ 40 void addBack(Procedure proc); 41 42 /** 43 * The procedure can't run at the moment. 44 * add it back to the queue, giving priority to someone else. 45 * @param proc the Procedure to add back to the list 46 */ 47 void yield(Procedure proc); 48 49 /** 50 * The procedure in execution completed. 51 * This can be implemented to perform cleanups. 52 * @param proc the Procedure that completed the execution. 53 */ 54 void completionCleanup(Procedure proc); 55 56 /** 57 * Fetch one Procedure from the queue 58 * @return the Procedure to execute, or null if nothing present. 59 */ 60 Procedure poll(); 61 62 /** 63 * In case the class is blocking on poll() waiting for items to be added, 64 * this method should awake poll() and poll() should return. 65 */ 66 void signalAll(); 67 68 /** 69 * Returns the number of elements in this collection. 70 * @return the number of elements in this collection. 71 */ 72 int size(); 73 74 /** 75 * Removes all of the elements from this collection. 76 */ 77 void clear(); 78 }