Sha256: bec157de716e74b2bb66c0639633f2967ec007b22c1f3b784ccc955a3b167801

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module Pbw
  class AttachedProcess
  	belongs_to :token, :class_name => 'Pbw::Token'
  	belongs_to :area, :class_name => 'Pbw::Area'
  	belongs_to :process, :class_name => 'Pbw::Process'

  	field :tickable, :type => Boolean, :default => false
    field :updatable, :type => Boolean, :default => false
    field :ticks_waiting, :type => Integer, :default => 0
    field :updates_waiting, :type => Integer, :default => 0

    scope :tickable, where(tickable: true)
    scope :updatable, where(updatable: true)

    def tick!
        return unless self.tickable && self.process && (self.token || self.area)
        unless self.ticks_waiting > 0
            self.process.run!(token_or_area)
            destroy
        else
            self.ticks_waiting = self.ticks_waiting - 1
            save!
        end
    end

    def update!
        return unless self.updatable && self.process && (self.token || self.area)
        unless self.updates_waiting > 0
            self.process.run!(token_or_area)
            destroy
        else
            self.updates_waiting = self.updates_waiting - 1
            save!
        end
    end

    def token_or_area
    	self.token || self.area
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pbw-0.0.10 app/models/pbw/attached_process.rb