1*09537850SAkhilesh Sanikop /* 2*09537850SAkhilesh Sanikop * Copyright 2019 The libgav1 Authors 3*09537850SAkhilesh Sanikop * 4*09537850SAkhilesh Sanikop * Licensed under the Apache License, Version 2.0 (the "License"); 5*09537850SAkhilesh Sanikop * you may not use this file except in compliance with the License. 6*09537850SAkhilesh Sanikop * You may obtain a copy of the License at 7*09537850SAkhilesh Sanikop * 8*09537850SAkhilesh Sanikop * http://www.apache.org/licenses/LICENSE-2.0 9*09537850SAkhilesh Sanikop * 10*09537850SAkhilesh Sanikop * Unless required by applicable law or agreed to in writing, software 11*09537850SAkhilesh Sanikop * distributed under the License is distributed on an "AS IS" BASIS, 12*09537850SAkhilesh Sanikop * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*09537850SAkhilesh Sanikop * See the License for the specific language governing permissions and 14*09537850SAkhilesh Sanikop * limitations under the License. 15*09537850SAkhilesh Sanikop */ 16*09537850SAkhilesh Sanikop 17*09537850SAkhilesh Sanikop #ifndef LIBGAV1_SRC_UTILS_EXECUTOR_H_ 18*09537850SAkhilesh Sanikop #define LIBGAV1_SRC_UTILS_EXECUTOR_H_ 19*09537850SAkhilesh Sanikop 20*09537850SAkhilesh Sanikop #include <functional> 21*09537850SAkhilesh Sanikop 22*09537850SAkhilesh Sanikop namespace libgav1 { 23*09537850SAkhilesh Sanikop 24*09537850SAkhilesh Sanikop class Executor { 25*09537850SAkhilesh Sanikop public: 26*09537850SAkhilesh Sanikop virtual ~Executor(); 27*09537850SAkhilesh Sanikop 28*09537850SAkhilesh Sanikop // Schedules the specified "callback" for execution in this executor. 29*09537850SAkhilesh Sanikop // Depending on the subclass implementation, this may block in some 30*09537850SAkhilesh Sanikop // situations. 31*09537850SAkhilesh Sanikop virtual void Schedule(std::function<void()> callback) = 0; 32*09537850SAkhilesh Sanikop }; 33*09537850SAkhilesh Sanikop 34*09537850SAkhilesh Sanikop } // namespace libgav1 35*09537850SAkhilesh Sanikop 36*09537850SAkhilesh Sanikop #endif // LIBGAV1_SRC_UTILS_EXECUTOR_H_ 37