Documentation ¶
Overview ¶
Package gring provides a concurrent-safe/unsafe ring(circular lists).
Index ¶
- type Ring
- func (r *Ring) Cap() int
- func (r *Ring) Len() int
- func (r *Ring) Link(s *Ring) *Ring
- func (r *Ring) LockIteratorNext(f func(item *ring.Ring) bool)
- func (r *Ring) LockIteratorPrev(f func(item *ring.Ring) bool)
- func (r *Ring) Move(n int) *Ring
- func (r *Ring) Next() *Ring
- func (r *Ring) Prev() *Ring
- func (r *Ring) Put(value interface{}) *Ring
- func (r *Ring) RLockIteratorNext(f func(value interface{}) bool)
- func (r *Ring) RLockIteratorPrev(f func(value interface{}) bool)
- func (r *Ring) Set(value interface{}) *Ring
- func (r *Ring) SliceNext() []interface{}
- func (r *Ring) SlicePrev() []interface{}
- func (r *Ring) Unlink(n int) *Ring
- func (r *Ring) Val() interface{}
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Ring ¶
type Ring struct {
// contains filtered or unexported fields
}
func (*Ring) Link ¶
Link connects ring r with ring s such that r.Next() becomes s and returns the original value for r.Next(). r must not be empty.
If r and s point to the same ring, linking them removes the elements between r and s from the ring. The removed elements form a subring and the result is a reference to that subring (if no elements were removed, the result is still the original value for r.Next(), and not nil).
If r and s point to different rings, linking them creates a single ring with the elements of s inserted after r. The result points to the element following the last element of s after insertion.
func (*Ring) LockIteratorNext ¶
LockIteratorNext iterates and locks writing forward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.
func (*Ring) LockIteratorPrev ¶
LockIteratorPrev iterates and locks writing backward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.
func (*Ring) Move ¶
Move moves n % r.Len() elements backward (n < 0) or forward (n >= 0) in the ring and returns that ring element. r must not be empty.
func (*Ring) Next ¶
Next returns the next ring element. r must not be empty.
func (*Ring) Prev ¶
Prev returns the previous ring element. r must not be empty.
func (*Ring) Put ¶
Put sets <value> to current item of ring and moves position to next item.
func (*Ring) RLockIteratorNext ¶
RLockIteratorNext iterates and locks reading forward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.
func (*Ring) RLockIteratorPrev ¶
RLockIteratorPrev iterates and locks reading backward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.
func (*Ring) Set ¶
Set sets value to the item of current position.
func (*Ring) SliceNext ¶
func (r *Ring) SliceNext() []interface{}
SliceNext returns a copy of all item values as slice forward from current position.
func (*Ring) SlicePrev ¶
func (r *Ring) SlicePrev() []interface{}
SlicePrev returns a copy of all item values as slice backward from current position.
func (*Ring) Unlink ¶
Unlink removes n % r.Len() elements from the ring r, starting at r.Next(). If n % r.Len() == 0, r remains unchanged. The result is the removed subring. r must not be empty.