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)) 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")

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 { 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
} }