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.