Class: SadieSession
- Inherits:
-
Object
- Object
- SadieSession
- Defined in:
- lib/sadie_session.rb
Instance Attribute Summary collapse
-
#primers_dirpath ⇒ Object
Returns the value of attribute primers_dirpath.
Instance Method Summary collapse
- #get(key) ⇒ Object
- #has_key?(key) ⇒ Boolean
-
#initialize(params) ⇒ SadieSession
constructor
A new instance of SadieSession.
- #primer_registered?(key) ⇒ Boolean
- #set(keys, value, params = nil) ⇒ Object
- #unset(key) ⇒ Object
Constructor Details
#initialize(params) ⇒ SadieSession
Returns a new instance of SadieSession.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/sadie_session.rb', line 10 def initialize( params ) @expiry_mutex = Mutex.new @expire_schedule = MultiRBTree.new @expiry_thread = Thread.new do _expiry_loop end @refresh_mutex = Mutex.new @refresh_schedule = MultiRBTree.new @refresh_thread = Thread.new do _refresh_loop end @registered_key = {} unless params.nil? if params.is_a? Hash if params.has_key?( :primers_dirpath ) self.primers_dirpath = params[:primers_dirpath] puts "initializing session with primer dirpath: #{self.primers_dirpath}" _register_primers end end end @storage_manager_thread_mutex = Mutex.new @storage_manager = SadieStorageManager.new @storage_manager_thread_mutex.synchronize do @storage_manager.register_storage_mechanism :memory, SadieStorageMechanismMemory.new end end |
Instance Attribute Details
#primers_dirpath ⇒ Object
Returns the value of attribute primers_dirpath.
8 9 10 |
# File 'lib/sadie_session.rb', line 8 def primers_dirpath @primers_dirpath end |
Instance Method Details
#get(key) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/sadie_session.rb', line 75 def get( key ) if @storage_manager.has_key?( key ) @storage_manager.get( key ) elsif primer_registered?( key ) p = Primer.new( :session => self ) p.decorate( @registered_key[ key ] ) if p.expire == :on_get ret = @storage_manager.get( key ) @storage_manager.unset( key ) ret elsif ( p.refreshes? ) _manage_refresh( key, p.refresh_rate ) @storage_manager.get( key ) else @storage_manager.get( key ) end end end |
#has_key?(key) ⇒ Boolean
43 44 45 46 47 |
# File 'lib/sadie_session.rb', line 43 def has_key?( key ) @storage_manager_thread_mutex.synchronize do @storage_manager.has_key?( key ) end end |
#primer_registered?(key) ⇒ Boolean
49 50 51 |
# File 'lib/sadie_session.rb', line 49 def primer_registered?( key ) @registered_key.has_key? key end |
#set(keys, value, params = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/sadie_session.rb', line 59 def set( keys, value, params=nil ) expires, mechanism = :never, :memory unless params.nil? if params.is_a? Hash expires = params[:expire] if params.has_key?( :expire ) mechanism = params[:mechanism] if params.has_key?( :mechanism ) end end @storage_manager_thread_mutex.synchronize do @storage_manager.set( :keys => Array( keys ), :value => value, :mechanism => mechanism ) end _manage_expiry( keys, expires ) unless expires == :never || expires == :on_get end |
#unset(key) ⇒ Object
53 54 55 56 57 |
# File 'lib/sadie_session.rb', line 53 def unset( key ) @storage_manager_thread_mutex.synchronize do @storage_manager.unset( key ) end end |