Sha256: 3e73bc532b95badd8e653cc2aac0faa5e853ccd99d9b6027b80c476500030bf7

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

require 'fasten/support/state'

module Fasten
  class Task
    include Fasten::Support::State

    attr_accessor :name, :after, :shell, :ruby, :worker_class, :dependants, :depends, :request, :response, :worker, :run_score, :weight, :block

    def initialize(name:, shell: nil, ruby: nil, block: nil, request: nil, after: nil, weight: 1, worker_class: nil)
      self.name = name
      self.shell = shell
      self.ruby = ruby
      self.block = block
      self.request = request
      self.after = after
      self.weight = weight
      self.worker_class = worker_class

      # ObjectSpace.define_finalizer(self) do
      #   puts "I am dying! pid: #{Process.pid} thread: #{Thread.current} TASK #{@name}"
      # end

      block&.object_id
      # block && begin

      #   # puts "block_id: #{block.object_id} for task #{@name}"
      # end

      # block && ObjectSpace.define_finalizer(block) do
      #   puts "I am dying! pid: #{Process.pid} thread: #{Thread.current} TASK #{@name} BLOCK"
      # end
    end

    def marshal_dump
      [@name, @state, @ini, @fin, @dif, @request, @response, @shell, @ruby, @block&.object_id, @error]
    end

    def marshal_load(data)
      @name, @state, @ini, @fin, @dif, @request, @response, @shell, @ruby, block_id, @error = data
      @block = begin
        ObjectSpace._id2ref block_id.to_i if block_id
      rescue StandardError
        # pass
      end

      raise "Sorry, unable to get block for task #{self}, please try using threads" if block_id && !@block.is_a?(Proc)
    end

    def kind
      'task'
    end

    def to_s
      name
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fasten-0.18.0 lib/fasten/task.rb
fasten-0.16.0 lib/fasten/task.rb
fasten-0.14.4 lib/fasten/task.rb