/usr/lib/ruby/vendor_ruby/celluloid/task_set.rb is in ruby-celluloid 0.16.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 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 42 43 44 45 46 47 48 49 | require 'set'
require 'forwardable'
module Celluloid
if defined? JRUBY_VERSION
require 'jruby/synchronized'
class TaskSet
extend Forwardable
include JRuby::Synchronized
def_delegators :@tasks, :<<, :delete, :first, :empty?, :to_a
def initialize
@tasks = Set.new
end
end
elsif defined? Rubinius
class TaskSet
def initialize
@tasks = Set.new
end
def <<(task)
Rubinius.synchronize(self) { @tasks << task }
end
def delete(task)
Rubinius.synchronize(self) { @tasks.delete task }
end
def first
Rubinius.synchronize(self) { @tasks.first }
end
def empty?
Rubinius.synchronize(self) { @tasks.empty? }
end
def to_a
Rubinius.synchronize(self) { @tasks.to_a }
end
end
else
# Assume we're on MRI, where we have the GIL. But what about IronRuby?
# Or MacRuby. Do people care? This will break Celluloid::StackDumps
TaskSet = Set
end
end
|