| 510 | } |
| 511 | |
| 512 | func newLogFollower( |
| 513 | ctx context.Context, logger slog.Logger, db database.Store, ps pubsub.Pubsub, |
| 514 | rw http.ResponseWriter, r *http.Request, job database.ProvisionerJob, after int64, |
| 515 | ) *logFollower { |
| 516 | return &logFollower{ |
| 517 | ctx: ctx, |
| 518 | logger: logger, |
| 519 | db: db, |
| 520 | pubsub: ps, |
| 521 | r: r, |
| 522 | rw: rw, |
| 523 | jobID: job.ID, |
| 524 | after: after, |
| 525 | complete: jobIsComplete(logger, job), |
| 526 | notifications: make(chan provisionersdk.ProvisionerJobLogsNotifyMessage), |
| 527 | errors: make(chan error), |
| 528 | } |
| 529 | } |
| 530 | |
| 531 | func (f *logFollower) follow() { |
| 532 | var cancel context.CancelFunc |