mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-19 21:59:59 -08:00
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))
|
||||
}
|
||||
|
||||
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")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue