Make Server#broadcastProtoMessageWithPredicate more general (use a ClientPredicate insteaad of a VersionPredicate)

This commit is contained in:
Mikkel Krautz 2010-11-28 20:50:32 +01:00
parent 2f5328cbab
commit 8aa01f9370
2 changed files with 12 additions and 12 deletions

View file

@ -406,8 +406,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
txtmsg.Message = proto.String(fmt.Sprintf("User '%s' stopped recording", user.Username))
}
server.broadcastProtoMessageWithPredicate(MessageTextMessage, txtmsg, func(version uint32) bool {
return version < 0x10203
server.broadcastProtoMessageWithPredicate(MessageTextMessage, txtmsg, func(client *Client) bool {
return client.Version < 0x10203
})
broadcast = true
@ -440,8 +440,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
// The sent texture is a new-style texture. Strip it from the message
// we send to pre-1.2.2 clients.
userstate.Texture = nil
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
return version < 0x10202
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
return client.Version < 0x10202
})
if err != nil {
log.Panic("Unable to broadcast UserState")
@ -450,8 +450,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
userstate.Texture = user.Texture
} else {
// Old style texture. We can send the message as-is.
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
return version < 0x10202
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
return client.Version < 0x10202
})
if err != nil {
log.Panic("Unable to broadcast UserState")
@ -471,8 +471,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
userstate.CommentHash = user.CommentHash
}
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
return version >= 0x10203
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
return client.Version >= 0x10203
})
if err != nil {
log.Panic("Unable to broadcast UserState")

View file

@ -464,11 +464,11 @@ func (server *Server) sendClientPermissions(client *Client, channel *Channel) {
})
}
type VersionPredicate func(version uint32) bool
type ClientPredicate func(client *Client) bool
func (server *Server) broadcastProtoMessageWithPredicate(kind uint16, msg interface{}, vercheck VersionPredicate) (err os.Error) {
func (server *Server) broadcastProtoMessageWithPredicate(kind uint16, msg interface{}, clientcheck ClientPredicate) (err os.Error) {
for _, client := range server.clients {
if !vercheck(client.Version) {
if !clientcheck(client) {
continue
}
if client.state != StateClientAuthenticated {
@ -484,7 +484,7 @@ func (server *Server) broadcastProtoMessageWithPredicate(kind uint16, msg interf
}
func (server *Server) broadcastProtoMessage(kind uint16, msg interface{}) (err os.Error) {
err = server.broadcastProtoMessageWithPredicate(kind, msg, func(version uint32) bool { return true })
err = server.broadcastProtoMessageWithPredicate(kind, msg, func(client *Client) bool { return true })
return
}