Sha256: c23b51a811a2dc3bbabd6b68268108a41c2692ce491ee0b73f229e16a051efbb
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
require 'mongoid' require 'mongoid/semaphore/unsynchronized_access' require 'mongoid/semaphore/sync_methods' module Mongoid module Semaphore #------------------------------------------------------------------------------ # => Overridden Instance Attribute Accessors on Volatile Fields #------------------------------------------------------------------------------ # => Volatile Value, Refresh Before Returning def sema_count self.save() self.reload return super end # => Volatile Value, Refresh Before Returning def used_by self.save() self.reload return super end #------------------------------------------------------------------------------ # => Inclusion hook. Adds fields, and default attributes #------------------------------------------------------------------------------ def self.included(base) super if defined?(super) base.class_eval do # => Define necessary fields for synchronization unless base.included_modules.include?(Mongoid::Document) include Mongoid::Document end # => Default Definition for semaphore value def __semaphore_attrs; @_semattr ||= {:count => 1}; end def __semaphore_initial_count; __semaphore_attrs[:count]; end # => Helper method for class to override default count def default_sema_count(count) count = count.to_i __semaphore_attrs[:count] = count return end # => Semaphore Counter field :sema_count, :type => Integer, :default => lambda { __semaphore_initial_count } # => Semaphore is currently held by "<hostname>:<pid>" || nil field :used_by, :type => String, :default => nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mongoid-semaphore-0.0.1 | lib/mongoid/semaphore.rb |