diff options
Diffstat (limited to 'buddy.go')
-rw-r--r-- | buddy.go | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -1,5 +1,9 @@ package main +import ( + "time" +) + type Buddy struct { Nick string Receive chan Message @@ -7,9 +11,31 @@ type Buddy struct { } func NewBuddy(nick string, room *Room) *Buddy { - // TODO: Implement me! + return &Buddy{ + Nick: nick, + Receive: make(chan Message), + room: room, + } } func (b *Buddy) Leave() { b.room.Leave(b.Nick) } + +func (b *Buddy) Push(msg Message) { + go func() { + select { + case b.Receive <- msg: + case <-time.Tick(time.Millisecond * 100): + } + }() +} + +// Say sends a text as a chat message of this user to the connected room. +func (b *Buddy) Say(text string) { + b.room.Messages <- Message{ + Type: MsgChat, + User: b.Nick, + Text: text, + } +} |