Files
trikotwaschliste/logbuffer/queue.go
2020-10-12 00:16:23 +02:00

44 lines
737 B
Go

package logbuffer
import "container/list"
type Queue struct {
queue *list.List
}
func New() *Queue{
return &Queue{queue: list.New()}
}
func (q Queue)push(value interface{}) {
q.queue.PushBack(value)
}
func (q Queue)pop() interface{} {
element := q.queue.Front()
value := element.Value
q.queue.Remove(element)
return value
}
func (q Queue)Length() int {
return q.queue.Len()
}
// Limit the amount of items in the queue
func (q Queue)Limit(items int) {
for q.Length() > items {
// Remove items
q.pop()
}
}
func (q Queue)ToSlice() []string {
var slice []string
element := q.queue.Front()
for i := 0; i < q.Length(); i++ {
slice = append(slice, element.Value.(string))
element = element.Next()
}
return slice
}