mtfosbot/module/twitch-irc/message-queue.go

64 lines
857 B
Go

package twitchirc
import (
"sync"
)
// MsgObj -
type MsgObj struct {
Command string
Params []string
}
// QueueList -
type QueueList struct {
Messages []*MsgObj
Lock *sync.Mutex
}
// NewQueue -
func NewQueue() *QueueList {
return &QueueList{}
}
// Add - add element
func (q *QueueList) Add(m *MsgObj) {
q.Messages = append(q.Messages, m)
}
// Get - get element
func (q *QueueList) Get() (m *MsgObj) {
if q.IsEmpty() {
return nil
}
m = q.Messages[0]
q.Messages = q.Messages[1:]
return
}
// IsEmpty -
func (q *QueueList) IsEmpty() bool {
if len(q.Messages) == 0 {
return true
}
return false
}
// Size -
func (q *QueueList) Size() int {
return len(q.Messages)
}
// Clear -
func (q *QueueList) Clear() {
if q.IsEmpty() {
return
}
for i := 0; i < len(q.Messages); i++ {
q.Messages[i] = nil
}
q.Messages = nil
return
}