64 lines
857 B
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
|
||
|
}
|