// © 2013 the CatBase Authors under the WTFPL. See AUTHORS for the list of authors. package msglog import "github.com/velour/catbase/bot/msg" type MsgLogger struct { in <-chan msg.Message out chan<- msg.Messages entries msg.Messages } func New(in chan msg.Message, out chan msg.Messages) *MsgLogger { return &MsgLogger{in, out, make(msg.Messages, 0)} } func RunNew(in chan msg.Message, out chan msg.Messages) { logger := New(in, out) go logger.Run() } func (l *MsgLogger) sendEntries() { l.out <- l.entries } func (l *MsgLogger) Run() { var msg msg.Message for { select { case msg = <-l.in: l.entries = append(l.entries, msg) case l.out <- l.entries: go l.sendEntries() } } }