19cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria/*
29cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * Copyright 2018 The Android Open Source Project
39cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria *
49cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * Licensed under the Apache License, Version 2.0 (the "License");
59cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * you may not use this file except in compliance with the License.
69cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * You may obtain a copy of the License at
79cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria *
89cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria *      http://www.apache.org/licenses/LICENSE-2.0
99cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria *
109cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * Unless required by applicable law or agreed to in writing, software
119cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * distributed under the License is distributed on an "AS IS" BASIS,
129cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * See the License for the specific language governing permissions and
149cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * limitations under the License.
159cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria */
169cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
17564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work;
189cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
199cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria/**
209cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria * The current status of a unit of work.
219cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria */
229cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Katariapublic enum State {
239cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
249cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
259cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that is enqueued (hasn't completed and isn't running)
269cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
279cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    ENQUEUED,
289cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
299cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
309cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that is currently being executed
319cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
329cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    RUNNING,
339cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
349cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
359cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that has completed successfully
369cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
379cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    SUCCEEDED,
389cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
399cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
409cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that has completed in a failure state
419cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
429cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    FAILED,
439cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
449cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
459cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that is currently blocked because its prerequisites haven't finished
469cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * successfully
479cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
489cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    BLOCKED,
499cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria
509cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria    /**
519cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     * The status for work that has been cancelled and will not execute
529cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria     */
53fde02413b724d73554aae93c65c716037401603fSumir Kataria    CANCELLED;
54fde02413b724d73554aae93c65c716037401603fSumir Kataria
55fde02413b724d73554aae93c65c716037401603fSumir Kataria    /**
56fde02413b724d73554aae93c65c716037401603fSumir Kataria     * Returns {@code true} if this State is considered finished.
57fde02413b724d73554aae93c65c716037401603fSumir Kataria     *
58fde02413b724d73554aae93c65c716037401603fSumir Kataria     * @return {@code true} for {@link #SUCCEEDED}, {@link #FAILED}, and {@link #CANCELLED} States
59fde02413b724d73554aae93c65c716037401603fSumir Kataria     */
60fde02413b724d73554aae93c65c716037401603fSumir Kataria    public boolean isFinished() {
61fde02413b724d73554aae93c65c716037401603fSumir Kataria        return (this == SUCCEEDED || this == FAILED || this == CANCELLED);
62fde02413b724d73554aae93c65c716037401603fSumir Kataria    }
639cf4f3d3aa83bc64db574955805c67ac9ea84008Sumir Kataria}
64