jretlang 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
data/changelog CHANGED
@@ -1,4 +1,10 @@
1
- commit da32dcd9da5cf9c8e3a7edc76465d032e5ca433d
1
+ commit efcd50f516f86ba0ce53c17587e9b5edadbebaa8
2
+ Author: Gareth Reeves <greeves@drwholdings.com>
3
+
4
+ in this release (0.2.3)
5
+ -- JRL::Schedule for scheduling events to run once or repeating at some point in the future
6
+
7
+ commit 454f958b29906bfb9f9de20a8edd0dbe54685fb2
2
8
  Author: Gareth Reeves <greeves@drwholdings.com>
3
9
 
4
10
  in this release (0.2.2)
data/jretlang.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jretlang}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gareth Reeves"]
12
- s.date = %q{2009-10-16}
12
+ s.date = %q{2009-10-21}
13
13
  s.description = %q{A JRuby package of jretlang}
14
14
  s.email = %q{reevesg@pobox.com}
15
15
  s.files = [
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  "lib/jretlang/channel.rb",
23
23
  "lib/jretlang/fiber.rb",
24
24
  "lib/jretlang/latch.rb",
25
+ "lib/jretlang/schedule.rb",
25
26
  "readme",
26
27
  "test/unit/test_examples.rb",
27
28
  "test/unit/unit_test_helper.rb",
@@ -0,0 +1,44 @@
1
+ class JRL::Schedule
2
+ class << self
3
+ def one_time( delay, name=:default, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
4
+ fiber(name).schedule( block, delay, time_unit )
5
+ end
6
+
7
+ def repeating( delay, interval, name=:default, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
8
+ fiber(name).schedule_with_fixed_delay( block, delay, interval, time_unit )
9
+ end
10
+
11
+ def dispose
12
+ @fiber_factory.dispose if @fiber_factory
13
+ @service.shutdown if @service
14
+ @fiber_map.each { |name, fiber| fiber.dispose } if @fiber_map
15
+
16
+ @fiber_factory = nil
17
+ @service = nil
18
+ @fiber_map = nil
19
+ end
20
+
21
+ private
22
+ def fiber_factory
23
+ @fiber_factory ||= create_fiber_factory
24
+ end
25
+
26
+ def create_fiber_factory
27
+ @service = JRL::Concurrent::Executors.newCachedThreadPool();
28
+ JRL::Fibers::PoolFiberFactory.new(@service);
29
+ end
30
+
31
+ def create_fiber
32
+ fiber = fiber_factory.create
33
+ fiber.start
34
+ fiber
35
+ end
36
+
37
+ def fiber( name )
38
+ name = name.to_s
39
+ @fiber_map ||= {}
40
+ @fiber_map[name] = create_fiber unless @fiber_map[name]
41
+ @fiber_map[name]
42
+ end
43
+ end
44
+ end
data/lib/jretlang.rb CHANGED
@@ -20,3 +20,4 @@ end
20
20
  require 'jretlang/latch'
21
21
  require 'jretlang/channel'
22
22
  require 'jretlang/fiber'
23
+ require 'jretlang/schedule'
@@ -51,12 +51,27 @@ class TestChannel < Test::Unit::TestCase
51
51
  assert l.await( 1 )
52
52
  end
53
53
 
54
+ def test_scheduler
55
+ l = latch( 1 )
56
+ JRL::Schedule.one_time( 0.01 ) { l.count_down }
57
+ assert l.await( 1 )
58
+ JRL::Schedule.dispose
59
+ end
60
+
54
61
  def test_fiber_schedule_recurring
55
62
  l = latch( 5 )
56
63
  @fiber.schedule_repeating( 1, 2, JRL::Concurrent::TimeUnit::MILLISECONDS ) { l.count_down }
57
64
  assert l.await( 1 )
58
65
  end
59
66
 
67
+ def test_scheduler_recurring
68
+ l = latch( 5 )
69
+ JRL::Schedule.repeating( 1, 2, :test, JRL::Concurrent::TimeUnit::MILLISECONDS ) { l.count_down }
70
+ assert l.await( 1 )
71
+ JRL::Schedule.dispose
72
+ end
73
+
74
+
60
75
  def test_unsubscribe
61
76
  l1 = latch( 1 )
62
77
  l2 = latch( 2 )
metadata CHANGED
@@ -36,6 +36,7 @@ files:
36
36
  - lib/jretlang/channel.rb
37
37
  - lib/jretlang/fiber.rb
38
38
  - lib/jretlang/latch.rb
39
+ - lib/jretlang/schedule.rb
39
40
  - readme
40
41
  - test/unit/test_examples.rb
41
42
  - test/unit/unit_test_helper.rb
@@ -157,13 +158,13 @@ requirements: []
157
158
 
158
159
  authors:
159
160
  - Gareth Reeves
160
- date: 2009-10-16 05:00:00 +00:00
161
+ date: 2009-10-21 05:00:00 +00:00
161
162
  platform: ruby
162
163
  test_files:
163
164
  - test/unit/test_examples.rb
164
165
  - test/unit/unit_test_helper.rb
165
166
  version: !ruby/object:Gem::Version
166
- version: 0.2.2
167
+ version: 0.2.3
167
168
  require_paths:
168
169
  - lib
169
170
  dependencies: []