package utils

// MsgQueue 消息队列
type MsgQueue struct {
	queue chan string
}

// NewMsgQueue 实例
func NewMsgQueue(max ...int) *MsgQueue {
	l := 20
	if len(max) > 0 {
		l = max[0]
	}

	return &MsgQueue{
		queue: make(chan string, l),
	}
}

// Pop 出队
func (m *MsgQueue) Pop() string {
	msg := <-m.queue
	return msg
}

// Push 入队
func (m *MsgQueue) Push(msg string) {
	m.queue <- msg
}

// Queue 获取 queue 自主控制
func (m *MsgQueue) Queue() chan string {
	return m.queue
}
