forked from External/grumble
Make Server#broadcastProtoMessageWithPredicate more general (use a ClientPredicate insteaad of a VersionPredicate)
This commit is contained in:
parent
2f5328cbab
commit
8aa01f9370
2 changed files with 12 additions and 12 deletions
16
message.go
16
message.go
|
|
@ -406,8 +406,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
||||||
txtmsg.Message = proto.String(fmt.Sprintf("User '%s' stopped recording", user.Username))
|
txtmsg.Message = proto.String(fmt.Sprintf("User '%s' stopped recording", user.Username))
|
||||||
}
|
}
|
||||||
|
|
||||||
server.broadcastProtoMessageWithPredicate(MessageTextMessage, txtmsg, func(version uint32) bool {
|
server.broadcastProtoMessageWithPredicate(MessageTextMessage, txtmsg, func(client *Client) bool {
|
||||||
return version < 0x10203
|
return client.Version < 0x10203
|
||||||
})
|
})
|
||||||
|
|
||||||
broadcast = true
|
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
|
// The sent texture is a new-style texture. Strip it from the message
|
||||||
// we send to pre-1.2.2 clients.
|
// we send to pre-1.2.2 clients.
|
||||||
userstate.Texture = nil
|
userstate.Texture = nil
|
||||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
|
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||||
return version < 0x10202
|
return client.Version < 0x10202
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic("Unable to broadcast UserState")
|
log.Panic("Unable to broadcast UserState")
|
||||||
|
|
@ -450,8 +450,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
||||||
userstate.Texture = user.Texture
|
userstate.Texture = user.Texture
|
||||||
} else {
|
} else {
|
||||||
// Old style texture. We can send the message as-is.
|
// Old style texture. We can send the message as-is.
|
||||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
|
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||||
return version < 0x10202
|
return client.Version < 0x10202
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic("Unable to broadcast UserState")
|
log.Panic("Unable to broadcast UserState")
|
||||||
|
|
@ -471,8 +471,8 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
||||||
userstate.CommentHash = user.CommentHash
|
userstate.CommentHash = user.CommentHash
|
||||||
}
|
}
|
||||||
|
|
||||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(version uint32) bool {
|
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||||
return version >= 0x10203
|
return client.Version >= 0x10203
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic("Unable to broadcast UserState")
|
log.Panic("Unable to broadcast UserState")
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
for _, client := range server.clients {
|
||||||
if !vercheck(client.Version) {
|
if !clientcheck(client) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if client.state != StateClientAuthenticated {
|
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) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue