@@ -10,6 +10,7 @@ import (
1010
1111 "github.com/syndtr/goleveldb/leveldb"
1212 "github.com/syndtr/goleveldb/leveldb/errors"
13+ "github.com/syndtr/goleveldb/leveldb/opt"
1314)
1415
1516// prefixDelimiter defines the delimiter used to separate a prefix from an
@@ -71,7 +72,7 @@ func OpenPrefixQueue(dataDir string) (*PrefixQueue, error) {
7172}
7273
7374// Enqueue adds an item to the queue.
74- func (pq * PrefixQueue ) Enqueue (prefix , value []byte ) (* Item , error ) {
75+ func (pq * PrefixQueue ) Enqueue (prefix , value []byte , opts ... * opt. WriteOptions ) (* Item , error ) {
7576 pq .Lock ()
7677 defer pq .Unlock ()
7778
@@ -94,7 +95,7 @@ func (pq *PrefixQueue) Enqueue(prefix, value []byte) (*Item, error) {
9495 }
9596
9697 // Add it to the queue.
97- if err := pq .db .Put (item .Key , item .Value , nil ); err != nil {
98+ if err := pq .db .Put (item .Key , item .Value , getOpts ( opts ) ); err != nil {
9899 return nil , err
99100 }
100101
@@ -248,7 +249,7 @@ func (pq *PrefixQueue) PeekByIDString(prefix string, id uint64) (*Item, error) {
248249}
249250
250251// Update updates an item in the given queue without changing its position.
251- func (pq * PrefixQueue ) Update (prefix []byte , id uint64 , newValue []byte ) (* Item , error ) {
252+ func (pq * PrefixQueue ) Update (prefix []byte , id uint64 , newValue []byte , opts ... * opt. WriteOptions ) (* Item , error ) {
252253 pq .Lock ()
253254 defer pq .Unlock ()
254255
@@ -276,7 +277,7 @@ func (pq *PrefixQueue) Update(prefix []byte, id uint64, newValue []byte) (*Item,
276277 }
277278
278279 // Update this item in the queue.
279- if err := pq .db .Put (item .Key , item .Value , nil ); err != nil {
280+ if err := pq .db .Put (item .Key , item .Value , getOpts ( opts ) ); err != nil {
280281 return nil , err
281282 }
282283
@@ -392,7 +393,7 @@ func (pq *PrefixQueue) getOrCreateQueue(prefix []byte) (*queue, error) {
392393}
393394
394395// savePrefixQueue saves the given queue for the given prefix.
395- func (pq * PrefixQueue ) saveQueue (prefix []byte , q * queue ) error {
396+ func (pq * PrefixQueue ) saveQueue (prefix []byte , q * queue , opts ... * opt. WriteOptions ) error {
396397 // Encode the queue using gob.
397398 var buffer bytes.Buffer
398399 enc := gob .NewEncoder (& buffer )
@@ -401,14 +402,14 @@ func (pq *PrefixQueue) saveQueue(prefix []byte, q *queue) error {
401402 }
402403
403404 // Save it to the database.
404- return pq .db .Put (generateKeyPrefixData (prefix ), buffer .Bytes (), nil )
405+ return pq .db .Put (generateKeyPrefixData (prefix ), buffer .Bytes (), getOpts ( opts ) )
405406}
406407
407408// save saves the main prefix queue data.
408- func (pq * PrefixQueue ) save () error {
409+ func (pq * PrefixQueue ) save (opts ... * opt. WriteOptions ) error {
409410 val := make ([]byte , 8 )
410411 binary .BigEndian .PutUint64 (val , pq .size )
411- return pq .db .Put (pq .getDataKey (), val , nil )
412+ return pq .db .Put (pq .getDataKey (), val , getOpts ( opts ) )
412413}
413414
414415// getDataKey generates the main prefix queue data key.
0 commit comments