|
@@ -92,10 +92,10 @@ module Session
|
|
# raise "Exception from thread"
|
|
# raise "Exception from thread"
|
|
}
|
|
}
|
|
end
|
|
end
|
|
-
|
|
|
|
- # system settings
|
|
|
|
- sleep 0.3
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ # system settings
|
|
|
|
+ sleep 0.4
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
@@ -146,8 +146,10 @@ end
|
|
|
|
|
|
module CacheIn
|
|
module CacheIn
|
|
@@data = {}
|
|
@@data = {}
|
|
|
|
+ @@data_time = {}
|
|
@@expires_in = {}
|
|
@@expires_in = {}
|
|
@@expires_in_ttl = {}
|
|
@@expires_in_ttl = {}
|
|
|
|
+
|
|
def self.set( key, value, params = {} )
|
|
def self.set( key, value, params = {} )
|
|
# puts 'CacheIn.set:' + key + '-' + value.inspect
|
|
# puts 'CacheIn.set:' + key + '-' + value.inspect
|
|
if params[:expires_in]
|
|
if params[:expires_in]
|
|
@@ -155,25 +157,42 @@ module CacheIn
|
|
@@expires_in_ttl[key] = params[:expires_in]
|
|
@@expires_in_ttl[key] = params[:expires_in]
|
|
end
|
|
end
|
|
@@data[ key ] = value
|
|
@@data[ key ] = value
|
|
|
|
+ @@data_time[ key ] = Time.now
|
|
end
|
|
end
|
|
- def self.expired( key )
|
|
|
|
|
|
+
|
|
|
|
+ def self.expired( key, params = {} )
|
|
|
|
+
|
|
|
|
+ # expire if value never was set
|
|
|
|
+ return true if !@@data.include? key
|
|
|
|
+
|
|
|
|
+ # set re_expire
|
|
|
|
+ if params[:re_expire]
|
|
|
|
+ if @@expires_in[key]
|
|
|
|
+ @@expires_in[key] = Time.now + @@expires_in_ttl[key]
|
|
|
|
+ end
|
|
|
|
+ return false
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ # check if expired
|
|
if @@expires_in[key]
|
|
if @@expires_in[key]
|
|
return true if @@expires_in[key] < Time.now
|
|
return true if @@expires_in[key] < Time.now
|
|
return false
|
|
return false
|
|
end
|
|
end
|
|
- return true
|
|
|
|
|
|
+
|
|
|
|
+ # return false if key was set without expires_in
|
|
|
|
+ return false
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def self.get_time( key, params = {} )
|
|
|
|
+ data = self.get( key, params )
|
|
|
|
+ if data
|
|
|
|
+ return @@data_time[key]
|
|
|
|
+ end
|
|
end
|
|
end
|
|
|
|
+
|
|
def self.get( key, params = {} )
|
|
def self.get( key, params = {} )
|
|
# puts 'CacheIn.get:' + key + '-' + @@data[ key ].inspect
|
|
# puts 'CacheIn.get:' + key + '-' + @@data[ key ].inspect
|
|
- if !params[:re_expire]
|
|
|
|
- if @@expires_in[key]
|
|
|
|
- return if self.expired(key)
|
|
|
|
- end
|
|
|
|
- else
|
|
|
|
- if @@expires_in[key]
|
|
|
|
- @@expires_in[key] = Time.now + @@expires_in_ttl[key]
|
|
|
|
- end
|
|
|
|
- end
|
|
|
|
|
|
+ return if self.expired( key, params )
|
|
@@data[ key ]
|
|
@@data[ key ]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
@@ -344,9 +363,11 @@ class ClientState
|
|
|
|
|
|
# overview
|
|
# overview
|
|
cache_key = 'user_' + user.id.to_s + '_overview'
|
|
cache_key = 'user_' + user.id.to_s + '_overview'
|
|
- overview = CacheIn.get( cache_key )
|
|
|
|
- if overview && @data[:overview] != overview
|
|
|
|
- @data[:overview] = overview
|
|
|
|
|
|
+ overview_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if overview_time && @data[:overview_time] != overview_time
|
|
|
|
+ @data[:overview_time] = overview_time
|
|
|
|
+ overview = CacheIn.get( cache_key )
|
|
|
|
+
|
|
self.log "push overview for user #{user.id}"
|
|
self.log "push overview for user #{user.id}"
|
|
|
|
|
|
# send update to browser
|
|
# send update to browser
|
|
@@ -363,9 +384,10 @@ class ClientState
|
|
overviews.each { |overview|
|
|
overviews.each { |overview|
|
|
cache_key = 'user_' + user.id.to_s + '_overview_data_' + overview.meta[:url]
|
|
cache_key = 'user_' + user.id.to_s + '_overview_data_' + overview.meta[:url]
|
|
|
|
|
|
- overview_data = CacheIn.get( cache_key )
|
|
|
|
- if overview_data && @data[cache_key] != overview_data
|
|
|
|
- @data[cache_key] = overview_data
|
|
|
|
|
|
+ overview_data_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if overview_data_time && @data[cache_key] != overview_data_time
|
|
|
|
+ @data[cache_key] = overview_data_time
|
|
|
|
+ overview_data = CacheIn.get( cache_key )
|
|
self.log "push overview_data for user #{user.id}"
|
|
self.log "push overview_data for user #{user.id}"
|
|
|
|
|
|
users = {}
|
|
users = {}
|
|
@@ -392,9 +414,10 @@ class ClientState
|
|
|
|
|
|
# ticket_create_attributes
|
|
# ticket_create_attributes
|
|
cache_key = 'user_' + user.id.to_s + '_ticket_create_attributes'
|
|
cache_key = 'user_' + user.id.to_s + '_ticket_create_attributes'
|
|
- ticket_create_attributes = CacheIn.get( cache_key )
|
|
|
|
- if ticket_create_attributes && @data[:ticket_create_attributes] != ticket_create_attributes
|
|
|
|
- @data[:ticket_create_attributes] = ticket_create_attributes
|
|
|
|
|
|
+ ticket_create_attributes_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if ticket_create_attributes_time && @data[:ticket_create_attributes_time] != ticket_create_attributes_time
|
|
|
|
+ @data[:ticket_create_attributes_time] = ticket_create_attributes_time
|
|
|
|
+ ticket_create_attributes = CacheIn.get( cache_key )
|
|
self.log "push ticket_create_attributes for user #{user.id}"
|
|
self.log "push ticket_create_attributes for user #{user.id}"
|
|
|
|
|
|
# send update to browser
|
|
# send update to browser
|
|
@@ -406,9 +429,10 @@ class ClientState
|
|
|
|
|
|
# recent viewed
|
|
# recent viewed
|
|
cache_key = 'user_' + user.id.to_s + '_recent_viewed'
|
|
cache_key = 'user_' + user.id.to_s + '_recent_viewed'
|
|
- recent_viewed = CacheIn.get( cache_key )
|
|
|
|
- if recent_viewed && @data[:recent_viewed] != recent_viewed
|
|
|
|
- @data[:recent_viewed] = recent_viewed
|
|
|
|
|
|
+ recent_viewed_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if recent_viewed_time && @data[:recent_viewed_time] != recent_viewed_time
|
|
|
|
+ @data[:recent_viewed_time] = recent_viewed_time
|
|
|
|
+ recent_viewed = CacheIn.get( cache_key )
|
|
self.log "push recent_viewed for user #{user.id}"
|
|
self.log "push recent_viewed for user #{user.id}"
|
|
|
|
|
|
# send update to browser
|
|
# send update to browser
|
|
@@ -421,9 +445,10 @@ class ClientState
|
|
|
|
|
|
# activity stream
|
|
# activity stream
|
|
cache_key = 'user_' + user.id.to_s + '_activity_stream'
|
|
cache_key = 'user_' + user.id.to_s + '_activity_stream'
|
|
- activity_stream = CacheIn.get( cache_key )
|
|
|
|
- if activity_stream && @data[:activity_stream] != activity_stream
|
|
|
|
- @data[:activity_stream] = activity_stream
|
|
|
|
|
|
+ activity_stream_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if activity_stream_time && @data[:activity_stream_time] != activity_stream_time
|
|
|
|
+ @data[:activity_stream_time] = activity_stream_time
|
|
|
|
+ activity_stream = CacheIn.get( cache_key )
|
|
self.log "push activity_stream for user #{user.id}"
|
|
self.log "push activity_stream for user #{user.id}"
|
|
|
|
|
|
# send update to browser
|
|
# send update to browser
|
|
@@ -437,9 +462,10 @@ class ClientState
|
|
|
|
|
|
# rss
|
|
# rss
|
|
cache_key = 'user_' + user.id.to_s + '_rss'
|
|
cache_key = 'user_' + user.id.to_s + '_rss'
|
|
- rss_items = CacheIn.get( cache_key )
|
|
|
|
- if rss_items && @data[:rss] != rss_items
|
|
|
|
- @data[:rss] = rss_items
|
|
|
|
|
|
+ rss_items_time = CacheIn.get_time( cache_key )
|
|
|
|
+ if rss_items_time && @data[:rss_time] != rss_items_time
|
|
|
|
+ @data[:rss_time] = rss_items_time
|
|
|
|
+ rss_items = CacheIn.get( cache_key )
|
|
self.log "push rss for user #{user.id}"
|
|
self.log "push rss for user #{user.id}"
|
|
|
|
|
|
# send update to browser
|
|
# send update to browser
|