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 ID to execute, or null if nothing present.
59 */
60 Long 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 }