From 8aa01f9370a6097132a70589ac15d89b84a30753 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Sun, 28 Nov 2010 20:50:32 +0100 Subject: [PATCH] Make Server#broadcastProtoMessageWithPredicate more general (use a ClientPredicate insteaad of a VersionPredicate) --- message.go | 16 ++++++++-------- server.go | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/message.go b/message.go index bc7de22..d90a02a 100644 --- a/message.go +++ b/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") diff --git a/server.go b/server.go index e34d8c1..fddef92 100644 --- a/server.go +++ b/server.go @@ -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 }