~widelands-dev/widelands-metaserver/ircbridge

« back to all changes in this revision

Viewing changes to wlms/server.go

  • Committer: Tino
  • Date: 2014-01-29 20:27:26 UTC
  • Revision ID: tino-20140129202726-8mwaj65nko6gq6ey
non blocking sending

Show diffs side-by-side

added added

removed removed

Lines of Context:
88
88
}
89
89
 
90
90
func (s *Server) AddClient(client *Client) {
91
 
        s.messagesOut <- Message{
92
 
                message: client.Name() + " has joined the lobby.",
93
 
                nick:    client.Name(),
94
 
        }
 
91
        s.BroadcastToIrc(client.Name() + " has joined the lobby.")
95
92
        s.clients.PushBack(client)
96
93
}
97
94
 
154
151
func (s *Server) AddGame(game *Game) {
155
152
        s.games.PushBack(game)
156
153
        s.BroadcastToConnectedClients("GAMES_UPDATE")
157
 
        s.messagesOut <- Message{message: "A new game " + game.Name() + " was opened by " + game.Host(),
158
 
                nick: game.Host(),
159
 
        }
 
154
        s.BroadcastToIrc("A new game " + game.Name() + " was opened by " + game.Host())
160
155
}
161
156
 
162
157
func (s *Server) RemoveGame(game *Game) {
198
193
        }
199
194
}
200
195
 
201
 
func (s Server) BroadcastToIrc(nick, message string) {
202
 
        s.messagesOut <- Message{
203
 
                message: nick + "(Lobby): " + message,
204
 
                nick:    nick,
 
196
func (s Server) BroadcastToIrc(message string) {
 
197
        select {
 
198
        case s.messagesOut <- Message{
 
199
                message: message,
 
200
        }:
 
201
        default:
 
202
                log.Println("Message Queue full.")
205
203
        }
 
204
 
206
205
}
207
206
 
208
207
func RunServer(db UserDb, messagesIn chan Message, messagesOut chan Message) {
281
280
        server.gamePingCreator = RealGamePingFactory{server}
282
281
        go func() {
283
282
                for m := range messagesIn {
284
 
                        server.BroadcastToConnectedClients("CHAT", m.nick, m.message, "public")
 
283
                        server.BroadcastToConnectedClients("CHAT", m.nick+"(IRC)", m.message, "public")
285
284
                }
286
285
        }()
287
286
        go server.mainLoop()