X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d89b7ae1f6fa35dd3627ead14c855751f1de2193..43b48acab676c1097d393c755e5320b370afa937:/services/keepstore/work_queue.go?ds=sidebyside diff --git a/services/keepstore/work_queue.go b/services/keepstore/work_queue.go index 58e4966595..56c6376ad3 100644 --- a/services/keepstore/work_queue.go +++ b/services/keepstore/work_queue.go @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + package main /* A WorkQueue is an asynchronous thread-safe queue manager. It @@ -84,18 +88,20 @@ package main import "container/list" +// WorkQueue definition type WorkQueue struct { getStatus chan WorkQueueStatus newlist chan *list.List // Workers get work items by reading from this channel. NextItem <-chan interface{} - // Each worker must send struct{}{} to ReportDone exactly once + // Each worker must send struct{}{} to DoneItem exactly once // for each work item received from NextItem, when it stops // working on that item (regardless of whether the work was // successful). - ReportDone chan<- struct{} + DoneItem chan<- struct{} } +// WorkQueueStatus reflects the queue status. type WorkQueueStatus struct { InProgress int Queued int @@ -108,10 +114,10 @@ func NewWorkQueue() *WorkQueue { reportDone := make(chan struct{}) newList := make(chan *list.List) b := WorkQueue{ - getStatus: make(chan WorkQueueStatus), - newlist: newList, - NextItem: nextItem, - ReportDone: reportDone, + getStatus: make(chan WorkQueueStatus), + newlist: newList, + NextItem: nextItem, + DoneItem: reportDone, } go func() { // Read new work lists from the newlist channel.