|
|
@@ -3,15 +3,23 @@ package games
|
|
|
type Games struct {
|
|
|
addChan chan *Game
|
|
|
listChan chan listChan
|
|
|
+ getChan chan getGame
|
|
|
}
|
|
|
|
|
|
type listChan chan []*Game
|
|
|
|
|
|
+type getGame struct {
|
|
|
+ id int64
|
|
|
+ returnChan chan *Game
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
func New() Games {
|
|
|
|
|
|
games := Games{
|
|
|
addChan: make(chan *Game),
|
|
|
listChan: make(chan listChan),
|
|
|
+ getChan: make(chan getGame),
|
|
|
}
|
|
|
|
|
|
go serveGames(games)
|
|
|
@@ -31,6 +39,8 @@ func serveGames(games Games) {
|
|
|
v = append(v, value)
|
|
|
}
|
|
|
r <- v
|
|
|
+ case r := <-games.getChan:
|
|
|
+ r.returnChan <- gamesMap[r.id]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -44,3 +54,13 @@ func (games Games) ListGames() []*Game {
|
|
|
games.listChan <- r
|
|
|
return <-r
|
|
|
}
|
|
|
+
|
|
|
+func (games Games) GetGame(id int64) *Game {
|
|
|
+ getGame := getGame {
|
|
|
+ id: id,
|
|
|
+ returnChan: make(chan *Game),
|
|
|
+
|
|
|
+ }
|
|
|
+ games.getChan <- getGame
|
|
|
+ return <- getGame.returnChan
|
|
|
+}
|