public function status($status, $message = null)
    {
        if (!in_array($status, static::$states)) {
            throw new Exception('Unknown state: '.$status);
        }

        // If the current status is complete, don't update again.  I have seen cases of a late
        // processing call on a HLS stream file after it's already been set to complete.  I think
        // it could just be weird internet delays.
        if ($this->complete == 'complete') {
            return;
        }

        // Append messages
        if ($this->message) {
            $this->message .= ' ';
        }

        if ($message) {
            $this->message .= $message;
        }

        // If a job is errored, don't unset it.  Thus, if one output fails, a notification
        // from a later output succeeding still means an overall failure.
        if ($this->status != 'error') {
            $this->status = $status;
        }

        // Save it
        $this->save();
    }