From 01c8df01ec0608f1f25b2f1444adabb98fa5ee8a Mon Sep 17 00:00:00 2001 From: Unknwon Date: Thu, 24 Oct 2019 01:51:46 -0700 Subject: internal: move packages under this directory (#5836) * Rename pkg -> internal * Rename routes -> route * Move route -> internal/route * Rename models -> db * Move db -> internal/db * Fix route2 -> route * Move cmd -> internal/cmd * Bump version --- pkg/sync/unique_queue.go | 70 ------------------------------------------------ 1 file changed, 70 deletions(-) delete mode 100644 pkg/sync/unique_queue.go (limited to 'pkg/sync/unique_queue.go') diff --git a/pkg/sync/unique_queue.go b/pkg/sync/unique_queue.go deleted file mode 100644 index 48355019..00000000 --- a/pkg/sync/unique_queue.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2016 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package sync - -import ( - "github.com/unknwon/com" -) - -// UniqueQueue is a queue which guarantees only one instance of same -// identity is in the line. Instances with same identity will be -// discarded if there is already one in the line. -// -// This queue is particularly useful for preventing duplicated task -// of same purpose. -type UniqueQueue struct { - table *StatusTable - queue chan string -} - -// NewUniqueQueue initializes and returns a new UniqueQueue object. -func NewUniqueQueue(queueLength int) *UniqueQueue { - if queueLength <= 0 { - queueLength = 100 - } - - return &UniqueQueue{ - table: NewStatusTable(), - queue: make(chan string, queueLength), - } -} - -// Queue returns channel of queue for retrieving instances. -func (q *UniqueQueue) Queue() <-chan string { - return q.queue -} - -// Exist returns true if there is an instance with given indentity -// exists in the queue. -func (q *UniqueQueue) Exist(id interface{}) bool { - return q.table.IsRunning(com.ToStr(id)) -} - -// AddFunc adds new instance to the queue with a custom runnable function, -// the queue is blocked until the function exits. -func (q *UniqueQueue) AddFunc(id interface{}, fn func()) { - if q.Exist(id) { - return - } - - idStr := com.ToStr(id) - q.table.Lock() - q.table.pool[idStr] = true - if fn != nil { - fn() - } - q.table.Unlock() - q.queue <- idStr -} - -// Add adds new instance to the queue. -func (q *UniqueQueue) Add(id interface{}) { - q.AddFunc(id, nil) -} - -// Remove removes instance from the queue. -func (q *UniqueQueue) Remove(id interface{}) { - q.table.Stop(com.ToStr(id)) -} -- cgit v1.2.3