1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://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,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.quicksearchbox.util
17 
18 /** Runs tasks that have a name tag. */
19 interface NamedTaskExecutor {
20   /**
21    * Schedules a task for execution. Implementations should not throw
22    * [java.util.concurrent.RejectedExecutionException] if the task cannot be run. They should drop
23    * it silently instead.
24    */
executenull25   fun execute(task: NamedTask?)
26 
27   /** Stops any unstarted tasks from running. Implementations of this method must be idempotent. */
28   fun cancelPendingTasks()
29 
30   /**
31    * Shuts down this executor, freeing any resources that it owns. The executor may not be used
32    * after calling this method. Implementations of this method must be idempotent.
33    */
34   fun close()
35 }
36