(jobURL JobURL)
| 153 | } |
| 154 | |
| 155 | func (client *Client) PollJobToEventStream(jobURL JobURL) chan PollJobEvent { |
| 156 | stream := make(chan PollJobEvent) |
| 157 | |
| 158 | if jobURL == "" { |
| 159 | close(stream) |
| 160 | return stream |
| 161 | } |
| 162 | |
| 163 | go func() { |
| 164 | var end bool |
| 165 | |
| 166 | startTime := client.clock.Now() |
| 167 | for !end { |
| 168 | job, warnings, err := client.GetJob(jobURL) |
| 169 | event := PollJobEvent{ |
| 170 | State: job.State, |
| 171 | Err: err, |
| 172 | Warnings: warnings, |
| 173 | } |
| 174 | |
| 175 | switch { |
| 176 | case event.Err != nil: |
| 177 | end = true |
| 178 | case job.IsComplete(): |
| 179 | end = true |
| 180 | case job.HasFailed(): |
| 181 | event.Err = job.Errors()[0] |
| 182 | end = true |
| 183 | case client.clock.Now().Sub(startTime) > client.jobPollingTimeout: |
| 184 | event.Err = ccerror.JobTimeoutError{ |
| 185 | JobGUID: job.GUID, |
| 186 | Timeout: client.jobPollingTimeout, |
| 187 | } |
| 188 | end = true |
| 189 | } |
| 190 | |
| 191 | stream <- event |
| 192 | time.Sleep(client.jobPollingInterval) |
| 193 | } |
| 194 | |
| 195 | close(stream) |
| 196 | }() |
| 197 | |
| 198 | return stream |
| 199 | } |
nothing calls this directly
no test coverage detected