summaryrefslogtreecommitdiff
path: root/buddy.go
diff options
context:
space:
mode:
Diffstat (limited to 'buddy.go')
-rw-r--r--buddy.go28
1 files changed, 27 insertions, 1 deletions
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,
+ }
+}