mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	* Upgrade levelqueue to version 0.2.0 This adds functionality for Unique Queues * Add UniqueQueue interface and functions to create them * Add UniqueQueue implementations * Move TestPullRequests over to use UniqueQueue * Reduce code duplication * Add bytefifos * Ensure invalid types are logged * Fix close race in PersistableChannelQueue Shutdown
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
| # levelqueue
 | |
| 
 | |
| Level queue is a simple queue golang library base on go-leveldb.
 | |
| 
 | |
| [](https://drone.gitea.com/lunny/levelqueue)  [](http://gocover.io/gitea.com/lunny/levelqueue)
 | |
| [](https://goreportcard.com/report/gitea.com/lunny/levelqueue)
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| ```
 | |
| go get gitea.com/lunny/levelqueue
 | |
| ```
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ```Go
 | |
| 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:
 | |
| 
 | |
| ```Go
 | |
| 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:
 | |
| 
 | |
| ```Go
 | |
| 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. |