• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..24-Mar-2022-

.drone.ymlH A D24-Mar-2022388 2321

.gitignoreH A D24-Mar-202283 87

LICENSEH A D24-Mar-20221 KiB2016

README.mdH A D24-Mar-20221.4 KiB6038

error.goH A D24-Mar-2022345 156

queue.goH A D24-Mar-20227.1 KiB311250

set.goH A D24-Mar-20222.9 KiB12090

uniquequeue.goH A D24-Mar-20224.7 KiB194148

README.md

1# levelqueue
2
3Level queue is a simple queue golang library base on go-leveldb.
4
5[![Build Status](https://drone.gitea.com/api/badges/lunny/levelqueue/status.svg)](https://drone.gitea.com/lunny/levelqueue)  [![](http://gocover.io/_badge/gitea.com/lunny/levelqueue)](http://gocover.io/gitea.com/lunny/levelqueue)
6[![](https://goreportcard.com/badge/gitea.com/lunny/levelqueue)](https://goreportcard.com/report/gitea.com/lunny/levelqueue)
7
8## Installation
9
10```
11go get gitea.com/lunny/levelqueue
12```
13
14## Usage
15
16```Go
17queue, err := levelqueue.Open("./queue")
18
19err = queue.RPush([]byte("test"))
20
21// pop an element from left of the queue
22data, err = queue.LPop()
23
24// if handle success, element will be pop, otherwise it will be keep
25queue.LHandle(func(dt []byte) error{
26    return nil
27})
28```
29
30You can now create a Set from a leveldb:
31
32```Go
33set, err := levelqueue.OpenSet("./set")
34
35added, err:= set.Add([]byte("member1"))
36
37has, err := set.Has([]byte("member1"))
38
39members, err := set.Members()
40
41removed, err := set.Remove([]byte("member1"))
42```
43
44And you can create a UniqueQueue from a leveldb:
45
46```Go
47queue, err := levelqueue.OpenUnique("./queue")
48
49err := queue.RPush([]byte("member1"))
50
51err = queue.LPush([]byte("member1"))
52// Will return ErrAlreadyInQueue
53
54// and so on.
55```
56
57## Creating Queues, UniqueQueues and Sets from already open DB
58
59If you have an already open DB you can create these from this using the
60`NewQueue`, `NewUniqueQueue` and `NewSet` functions.