Class: JFuture
- Inherits:
-
BasicObject
- Defined in:
- lib/j_future.rb,
lib/j_future/version.rb,
lib/j_future/callable.rb,
lib/j_future/executor_factory.rb,
lib/j_future/daemon_thread_factory.rb
Defined Under Namespace
Classes: Callable, DaemonThreadFactory, ExecutorFactory
Constant Summary
collapse
- MILLIS =
::Java::JavaUtilConcurrent::TimeUnit::MILLISECONDS
- METHODS =
[:is_done?, :on_complete]
- VERSION =
"0.0.1"
Instance Method Summary
collapse
Constructor Details
#initialize(executor: :default, access_timeout_millis: nil, &block) ⇒ JFuture
Returns a new instance of JFuture.
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/j_future.rb', line 10
def initialize(executor: :default, access_timeout_millis: nil, &block)
@access_timeout_millis = access_timeout_millis
callable = Callable.new(&block)
if (executor.is_a? ::Java::JavaUtilConcurrent::AbstractExecutorService)
@executor = executor
else
@executor = ExecutorFactory.get_executor(executor)
end
@future = @executor.submit callable
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
39
40
41
42
43
44
45
|
# File 'lib/j_future.rb', line 39
def method_missing(name, *args, &block)
if @access_timeout_millis.nil?
@future.get.send(name, *args, &block)
else
@future.get(@access_timeout_millis.to_i, MILLIS).send(name, *args, &block)
end
end
|
Instance Method Details
#is_done? ⇒ Boolean
30
31
32
|
# File 'lib/j_future.rb', line 30
def is_done?
@future.isDone
end
|
#on_complete(&block) ⇒ Object
34
35
36
37
|
# File 'lib/j_future.rb', line 34
def on_complete(&block)
callback = Callable.new(self, &block)
@executor.submit callback
end
|
#respond_to?(id, *args) ⇒ Boolean
21
22
23
24
25
26
27
28
|
# File 'lib/j_future.rb', line 21
def respond_to?(id, *args)
return true if METHODS.include?(id)
if @access_timeout_millis.nil?
@future.get.respond_to?(id, *args)
else
@future.get(@access_timeout_millis.to_i, MILLIS).respond_to?(id, *args)
end
end
|