Improved re-push of changed and already pushed data.

This commit is contained in:
Martin Edenhofer 2012-12-15 00:24:59 +01:00
parent 419ed6571c
commit 17de3107d4

View file

@ -447,48 +447,54 @@ class ClientState
CacheIn.set( 'last_run_' + user.id.to_s , true, { :expires_in => 20.seconds } ) CacheIn.set( 'last_run_' + user.id.to_s , true, { :expires_in => 20.seconds } )
# verify already pushed data # verify already pushed data
if @pushed[:users] if !CacheIn.get( 'pushed_users' + @client_id.to_s )
users = {} CacheIn.set( 'pushed_users' + @client_id.to_s , true, { :expires_in => 15.seconds } )
@pushed[:users].each {|user_id, user_o| if @pushed[:users]
self.user( user_id, users ) users = {}
} @pushed[:users].each {|user_id, user_o|
if !users.empty? self.user( user_id, users )
users.each {|user_id, user_data|
self.log 'notify', "push update of already pushed user id #{user_id}"
} }
# send update to browser if !users.empty?
self.send({ users.each {|user_id, user_data|
:data => { self.log 'notify', "push update of already pushed user id #{user_id}"
:collections => { }
:User => users, # send update to browser
self.send({
:data => {
:collections => {
:User => users,
},
}, },
}, :event => [ 'loadCollection', 'ticket_overview_rebuild' ],
:event => [ 'loadCollection', 'ticket_overview_rebuild' ], });
}); end
end end
end end
# verify already pushed data # verify already pushed data
if @pushed[:tickets] if !CacheIn.get( 'pushed_tickets' + @client_id.to_s )
tickets = [] CacheIn.set( 'pushed_tickets' + @client_id.to_s , true, { :expires_in => 15.seconds } )
users = {} if @pushed[:tickets]
@pushed[:tickets].each {|ticket_id, ticket_data| tickets = []
self.ticket( ticket_id, tickets, users ) users = {}
} @pushed[:tickets].each {|ticket_id, ticket_data|
if !tickets.empty? self.ticket( ticket_id, tickets, users )
tickets.each {|ticket_id|
self.log 'notify', "push update of already pushed ticket id #{ticket_id}"
} }
# send update to browser if !tickets.empty?
self.send({ tickets.each {|ticket|
:data => { self.log 'notify', "push update of already pushed ticket id #{ticket['id']}"
:collections => { }
:Ticket => tickets, # send update to browser
:User => users, self.send({
:data => {
:collections => {
:Ticket => tickets,
:User => users,
},
}, },
}, :event => [ 'loadCollection', 'ticket_overview_rebuild' ],
:event => [ 'loadCollection', 'ticket_overview_rebuild' ], });
}); end
end end
end end