14484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria/*
24484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * Copyright 2018 The Android Open Source Project
34484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria *
44484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * Licensed under the Apache License, Version 2.0 (the "License");
54484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * you may not use this file except in compliance with the License.
64484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * You may obtain a copy of the License at
74484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria *
84484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria *      http://www.apache.org/licenses/LICENSE-2.0
94484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria *
104484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * Unless required by applicable law or agreed to in writing, software
114484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * distributed under the License is distributed on an "AS IS" BASIS,
124484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * See the License for the specific language governing permissions and
144484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * limitations under the License.
154484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria */
164484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria
174484814aab16eec8d004c9e560ed5e25e0272d4dSumir Katariapackage androidx.work;
184484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria
194484814aab16eec8d004c9e560ed5e25e0272d4dSumir Katariaimport android.support.annotation.WorkerThread;
204484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria
215a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumarimport java.util.List;
225a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar
234484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria/**
244484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * Blocking methods for {@link WorkContinuation} operations.  These methods are expected to be
254484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria * called from a background thread.
264484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria */
2762e0be94ea7e54ca9227564b14c1c6736ae770f7Sumir Katariapublic interface SynchronousWorkContinuation {
284484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria
294484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria    /**
3062e0be94ea7e54ca9227564b14c1c6736ae770f7Sumir Kataria     * Enqueues the instance of {@link WorkContinuation} in a synchronous fashion.  This method is
314484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria     * expected to be called from a background thread and, upon successful execution, you can rely
324484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria     * on that the work has been enqueued.
334484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria     */
344484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria    @WorkerThread
3562e0be94ea7e54ca9227564b14c1c6736ae770f7Sumir Kataria    void enqueueSync();
365a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar
375a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar    /**
385a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar     * Returns a {@link List} of {@link WorkStatus} that provides information about work,
395a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar     * their progress, and any resulting output in the {@link WorkContinuation}.
405a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar     *
415a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar     * @return A {@link  List} of {@link WorkStatus}es
425a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar     */
435a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar    @WorkerThread
445a4ced8020d8a3ee4b9100b97559db3d1fb5132bRahul Ravikumar    List<WorkStatus> getStatusesSync();
454484814aab16eec8d004c9e560ed5e25e0272d4dSumir Kataria}
46