You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitea-fork-majority-judgment/vendor/gitea.com/lunny/levelqueue
zeripath 2c903383b5
Add Unique Queue infrastructure and move TestPullRequests to this (#9856)
4 years ago
..
.drone.yml upgrade levelqueue to 0.1.0 (#9192) 4 years ago
.gitignore Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago
LICENSE upgrade levelqueue to 0.1.0 (#9192) 4 years ago
README.md Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago
error.go Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago
go.mod upgrade levelqueue to 0.1.0 (#9192) 4 years ago
go.sum upgrade levelqueue to 0.1.0 (#9192) 4 years ago
queue.go Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago
set.go Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago
uniquequeue.go Add Unique Queue infrastructure and move TestPullRequests to this (#9856) 4 years ago

README.md

levelqueue

Level queue is a simple queue golang library base on go-leveldb.

Build Status

Installation

go get gitea.com/lunny/levelqueue

Usage

queue, err := levelqueue.Open("./queue")

err = queue.RPush([]byte("test"))

// pop an element from left of the queue
data, err = queue.LPop()

// if handle success, element will be pop, otherwise it will be keep
queue.LHandle(func(dt []byte) error{
    return nil
})

You can now create a Set from a leveldb:

set, err := levelqueue.OpenSet("./set")

added, err:= set.Add([]byte("member1"))

has, err := set.Has([]byte("member1"))

members, err := set.Members()

removed, err := set.Remove([]byte("member1"))

And you can create a UniqueQueue from a leveldb:

queue, err := levelqueue.OpenUnique("./queue")

err := queue.RPush([]byte("member1"))

err = queue.LPush([]byte("member1"))
// Will return ErrAlreadyInQueue

// and so on.

Creating Queues, UniqueQueues and Sets from already open DB

If you have an already open DB you can create these from this using the NewQueue, NewUniqueQueue and NewSet functions.