1
0
Fork 0
No description
Find a file
Daniel Baumann 00fa044511
Releasing fastforward version 1.1.0-1~ffwd13+u1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2026-05-21 15:56:11 +02:00
.forgejo/workflows Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
debian Releasing fastforward version 1.1.0-1~ffwd13+u1. 2026-05-21 15:56:11 +02:00
.gitignore Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
.golangci.yaml Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
error.go Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
go.mod Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
go.sum Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
LICENSE Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
queue.go Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
queue_test.go Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
README.md Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
renovate.json Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
set.go Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
set_test.go Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00
uniquequeue.go Adding upstream version 1.0.0. 2025-07-19 11:59:41 +02:00
uniquequeue_test.go Merging upstream version 1.1.0. 2026-05-21 15:56:01 +02:00

levelqueue

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

Installation

go get code.forgejo.org/forgejo/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.