| 145 | } |
| 146 | |
| 147 | _onMessage(channel, message) { |
| 148 | if (channel === this.toKey('earlierDelayed')) { |
| 149 | // We should only receive these messages if activateDelayedJobs is |
| 150 | // enabled. |
| 151 | this._delayedTimer.schedule(parseInt(message, 10)); |
| 152 | return; |
| 153 | } |
| 154 | |
| 155 | message = JSON.parse(message); |
| 156 | if (message.event === 'failed' || message.event === 'retrying') { |
| 157 | message.data = new Error(message.data); |
| 158 | } |
| 159 | |
| 160 | this.emit('job ' + message.event, message.id, message.data); |
| 161 | |
| 162 | const job = this.jobs.get(message.id); |
| 163 | if (job) { |
| 164 | if (message.event === 'progress') { |
| 165 | job.progress = message.data; |
| 166 | } else if (message.event === 'retrying') { |
| 167 | job.options.retries -= 1; |
| 168 | } |
| 169 | |
| 170 | job.emit(message.event, message.data); |
| 171 | |
| 172 | if (message.event === 'succeeded' || message.event === 'failed') { |
| 173 | this.jobs.delete(message.id); |
| 174 | } |
| 175 | } |
| 176 | } |
| 177 | |
| 178 | isRunning() { |
| 179 | return !this.paused; |