View Javadoc

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  }