Documentation
¶
Overview ¶
Package typedqueue wraps a blobqueue, with serialization and runtime type checking of values.
Example ¶
package main
import (
"encoding/binary"
"errors"
"fmt"
"github.com/blueboardio/go-blobqueue/memory"
"github.com/blueboardio/go-blobqueue/typedqueue"
)
type Uint64 uint64
func (u Uint64) MarshalBinary() ([]byte, error) {
b := make([]byte, binary.MaxVarintLen64)
binary.PutUvarint(b, uint64(u))
return b, nil
}
func (u *Uint64) UnmarshalBinary(b []byte) error {
tmp, n := binary.Uvarint(b)
if n <= 0 {
return errors.New("invalid data")
}
*u = Uint64(tmp)
return nil
}
func main() {
q := typedqueue.New(&memory.Queue{}, Uint64(0))
_ = q.Push(Uint64(1))
_ = q.Push(Uint64(2))
_ = q.Push(Uint64(3))
li, _ := q.List()
fmt.Printf("%#v\n", li)
}
Output: []typedqueue_test.Uint64{0x1, 0x2, 0x3}
Index ¶
- type Queue
- func (q *Queue) Empty() error
- func (q *Queue) Len() (int, error)
- func (q *Queue) List() (interface{}, error)
- func (q *Queue) Pop() (encoding.BinaryMarshaler, error)
- func (q *Queue) Push(val encoding.BinaryMarshaler) error
- func (q *Queue) Shift() (encoding.BinaryMarshaler, error)
- func (q *Queue) Unshift(val encoding.BinaryMarshaler) error
- type Value
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Queue ¶
type Queue struct {
// contains filtered or unexported fields
}
func New ¶
func New(q blobqueue.Queue, zeroValue encoding.BinaryMarshaler) *Queue
New wraps a queue to store any value of the same type that implements encoding.BinaryMarshaler and encoding.BinaryUnmarshaler.
Any marshaling/unmarshaling error is unexpected and raises a panic. So any error returned by the queue methods come from the original queue.
func (*Queue) Pop ¶
func (q *Queue) Pop() (encoding.BinaryMarshaler, error)
Pop deletes the last element of the queue and returns this precise element. If the queue is empty it returns error blobqueue.ErrQueueIsEmpty.
func (*Queue) Push ¶
func (q *Queue) Push(val encoding.BinaryMarshaler) error
Push appends the queue with a new elem (val).
type Value ¶
type Value struct {
encoding.BinaryMarshaler
encoding.BinaryUnmarshaler
}
Click to show internal directories.
Click to hide internal directories.