diff options
Diffstat (limited to 'chat/buddy.go')
-rw-r--r-- | chat/buddy.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/chat/buddy.go b/chat/buddy.go new file mode 100644 index 0000000..c6f07ad --- /dev/null +++ b/chat/buddy.go @@ -0,0 +1,41 @@ +package chat + +import ( + "time" +) + +type Buddy struct { + Nick string + Receive chan Message + room *Room +} + +func NewBuddy(nick string, room *Room) *Buddy { + 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, + } +} |