From 472848fc93accb200ea2dedc46fdaa4e5d71d266 Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Tue, 25 Mar 2014 14:07:54 +0100 Subject: Implemented message broadcasting stuff for type Buddy --- buddy.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'buddy.go') diff --git a/buddy.go b/buddy.go index 750e424..1128956 100644 --- a/buddy.go +++ b/buddy.go @@ -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, + } +} -- cgit v1.2.3-54-g00ecf