diff options
author | Scytrin dai Kinthra <scytrin@gmail.com> | 2009-11-22 18:08:53 -0800 |
---|---|---|
committer | Scytrin dai Kinthra <scytrin@gmail.com> | 2009-12-02 20:01:07 -0800 |
commit | 50fc8eb0f1c35b9d0b8b4b83b603ae15c2fe0c18 (patch) | |
tree | fc92fddd4a19229a3e24dde08b4547e6f3b0145a | |
parent | c64d7520e5cd48ec51029a96f1dfe684b5d30370 (diff) | |
download | rack-50fc8eb0f1c35b9d0b8b4b83b603ae15c2fe0c18.tar.gz |
Inlining of #merge_sessions
-rw-r--r-- | lib/rack/session/memcache.rb | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/lib/rack/session/memcache.rb b/lib/rack/session/memcache.rb index 4a65cbf3..7ae8707a 100644 --- a/lib/rack/session/memcache.rb +++ b/lib/rack/session/memcache.rb @@ -74,7 +74,22 @@ module Rack @pool.add session_id, 0 # so we don't worry about cache miss on #set end old_session = new_session.instance_variable_get('@old') || {} - session = merge_sessions session_id, old_session, new_session, session + + begin # merge sessions + unless Hash === old_session and Hash === new_session + warn 'Bad old_session or new_session sessions provided.' + return session + end + + delete = old_session.keys - new_session.keys + env['rack.errors'].puts("//@#{session_id}: delete #{delete*','}") if $VERBOSE and not delete.empty? + delete.each{|k| session.delete k } + + update = new_session.keys.select{|k| new_session[k] != old_session[k] } + env['rack.errors'].puts("//@#{session_id}: update #{update*','}") if $VERBOSE and not update.empty? + update.each{|k| session[k] = new_session[k] } + end + @pool.set session_id, session, expiry return session_id rescue MemCache::MemCacheError, Errno::ECONNREFUSED # MemCache server cannot be contacted @@ -84,26 +99,6 @@ module Rack ensure @mutex.unlock if env['rack.multithread'] end - - private - - def merge_sessions sid, old, new, cur=nil - cur ||= {} - unless Hash === old and Hash === new - warn 'Bad old or new sessions provided.' - return cur - end - - delete = old.keys - new.keys - warn "//@#{sid}: delete #{delete*','}" if $VERBOSE and not delete.empty? - delete.each{|k| cur.delete k } - - update = new.keys.select{|k| new[k] != old[k] } - warn "//@#{sid}: update #{update*','}" if $VERBOSE and not update.empty? - update.each{|k| cur[k] = new[k] } - - cur - end end end end |