MCPcopy Index your code
hub / github.com/cloudfoundry/cli / PollJobToEventStream

Method PollJobToEventStream

api/cloudcontroller/ccv3/job.go:155–199  ·  view source on GitHub ↗
(jobURL JobURL)

Source from the content-addressed store, hash-verified

153}
154
155func (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}

Callers

nothing calls this directly

Calls 5

GetJobMethod · 0.95
IsCompleteMethod · 0.80
HasFailedMethod · 0.80
ErrorsMethod · 0.80
NowMethod · 0.65

Tested by

no test coverage detected