jretlang 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/.gitignore +3 -0
  2. data/Rakefile +33 -0
  3. data/VERSION +1 -0
  4. data/changelog +29 -0
  5. data/jretlang.gemspec +154 -0
  6. data/lib/jretlang/channel.rb +35 -0
  7. data/lib/jretlang/fiber.rb +15 -0
  8. data/lib/jretlang/latch.rb +10 -0
  9. data/lib/jretlang.rb +22 -0
  10. data/readme +1 -0
  11. data/test/unit/test_examples.rb +142 -0
  12. data/test/unit/unit_test_helper.rb +6 -0
  13. data/vendor/jetlang-0.2.0/jetlang-0.2.0-sources.jar +0 -0
  14. data/vendor/jetlang-0.2.0/site/apidocs/allclasses-frame.html +106 -0
  15. data/vendor/jetlang-0.2.0/site/apidocs/allclasses-noframe.html +106 -0
  16. data/vendor/jetlang-0.2.0/site/apidocs/constant-values.html +147 -0
  17. data/vendor/jetlang-0.2.0/site/apidocs/deprecated-list.html +147 -0
  18. data/vendor/jetlang-0.2.0/site/apidocs/help-doc.html +224 -0
  19. data/vendor/jetlang-0.2.0/site/apidocs/index-all.html +677 -0
  20. data/vendor/jetlang-0.2.0/site/apidocs/index.html +40 -0
  21. data/vendor/jetlang-0.2.0/site/apidocs/options +19 -0
  22. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/AsyncRequest.html +376 -0
  23. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/BaseSubscription.html +332 -0
  24. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/BatchSubscriber.html +303 -0
  25. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Channel.html +207 -0
  26. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/ChannelSubscription.html +295 -0
  27. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Converter.html +211 -0
  28. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/KeyedBatchSubscriber.html +307 -0
  29. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/LastSubscriber.html +304 -0
  30. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/MemoryChannel.html +391 -0
  31. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/MemoryRequestChannel.html +319 -0
  32. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Publisher.html +219 -0
  33. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Request.html +251 -0
  34. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/RequestChannel.html +264 -0
  35. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Session.html +173 -0
  36. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/SessionClosed.html +230 -0
  37. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Subscribable.html +230 -0
  38. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Subscriber.html +243 -0
  39. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/SubscriberList.html +334 -0
  40. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/AsyncRequest.html +191 -0
  41. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/BaseSubscription.html +205 -0
  42. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/BatchSubscriber.html +145 -0
  43. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Channel.html +181 -0
  44. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/ChannelSubscription.html +145 -0
  45. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Converter.html +194 -0
  46. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/KeyedBatchSubscriber.html +145 -0
  47. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/LastSubscriber.html +145 -0
  48. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/MemoryChannel.html +145 -0
  49. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/MemoryRequestChannel.html +145 -0
  50. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Publisher.html +197 -0
  51. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Request.html +211 -0
  52. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/RequestChannel.html +240 -0
  53. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Session.html +189 -0
  54. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/SessionClosed.html +193 -0
  55. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Subscribable.html +237 -0
  56. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Subscriber.html +197 -0
  57. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/SubscriberList.html +145 -0
  58. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-frame.html +76 -0
  59. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-summary.html +245 -0
  60. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-tree.html +172 -0
  61. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-use.html +237 -0
  62. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/BatchExecutor.html +219 -0
  63. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/BatchExecutorImpl.html +267 -0
  64. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Callback.html +217 -0
  65. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Disposable.html +219 -0
  66. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/DisposingExecutor.html +286 -0
  67. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/EventBuffer.html +352 -0
  68. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/EventReader.html +234 -0
  69. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Filter.html +216 -0
  70. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableBlockingQueue.html +337 -0
  71. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableExecutor.html +225 -0
  72. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableExecutorImpl.html +404 -0
  73. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Scheduler.html +280 -0
  74. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SchedulerImpl.html +354 -0
  75. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SynchronousDisposingExecutor.html +391 -0
  76. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SynchronousExecutor.html +307 -0
  77. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/BatchExecutor.html +224 -0
  78. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/BatchExecutorImpl.html +145 -0
  79. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Callback.html +499 -0
  80. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Disposable.html +669 -0
  81. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/DisposingExecutor.html +440 -0
  82. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/EventBuffer.html +197 -0
  83. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/EventReader.html +206 -0
  84. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Filter.html +219 -0
  85. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableBlockingQueue.html +145 -0
  86. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableExecutor.html +218 -0
  87. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableExecutorImpl.html +145 -0
  88. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Scheduler.html +235 -0
  89. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SchedulerImpl.html +145 -0
  90. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SynchronousDisposingExecutor.html +145 -0
  91. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SynchronousExecutor.html +145 -0
  92. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-frame.html +70 -0
  93. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-summary.html +226 -0
  94. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-tree.html +176 -0
  95. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-use.html +289 -0
  96. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/Fiber.html +266 -0
  97. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/FiberStub.ScheduledEvent.html +419 -0
  98. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/FiberStub.html +599 -0
  99. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/PoolFiberFactory.html +321 -0
  100. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/ThreadFiber.html +525 -0
  101. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/Fiber.html +346 -0
  102. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/FiberStub.ScheduledEvent.html +181 -0
  103. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/FiberStub.html +145 -0
  104. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/PoolFiberFactory.html +145 -0
  105. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/ThreadFiber.html +145 -0
  106. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-frame.html +50 -0
  107. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-summary.html +185 -0
  108. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-tree.html +172 -0
  109. data/vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-use.html +198 -0
  110. data/vendor/jetlang-0.2.0/site/apidocs/overview-frame.html +47 -0
  111. data/vendor/jetlang-0.2.0/site/apidocs/overview-summary.html +165 -0
  112. data/vendor/jetlang-0.2.0/site/apidocs/overview-tree.html +198 -0
  113. data/vendor/jetlang-0.2.0/site/apidocs/package-list +3 -0
  114. data/vendor/jetlang-0.2.0/site/apidocs/packages +3 -0
  115. data/vendor/jetlang-0.2.0/site/apidocs/resources/inherit.gif +0 -0
  116. data/vendor/jetlang-0.2.0/site/apidocs/stylesheet.css +29 -0
  117. data/vendor/jetlang-0.2.0.jar +0 -0
  118. metadata +172 -0
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ *.gem
2
+ *~
3
+ TAGS
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+ require 'fileutils'
3
+ require 'ftools'
4
+ require 'rake/testtask'
5
+ require 'jeweler'
6
+ include FileUtils
7
+
8
+ task :default => :test
9
+
10
+ Jeweler::Tasks.new do |gemspec|
11
+ gemspec.name = "jretlang"
12
+ gemspec.summary = "A JRuby package of jretlang"
13
+ gemspec.description = gemspec.summary
14
+ gemspec.email = "reevesg@pobox.com"
15
+ gemspec.homepage = "http://github.com/reevesg/jretlang"
16
+ gemspec.authors = ["Gareth Reeves"]
17
+ gemspec.rubyforge_project = "jretlang"
18
+ end
19
+
20
+ Jeweler::RubyforgeTasks.new do |rubyforge|
21
+ end
22
+
23
+
24
+ Rake::TestTask.new do |t|
25
+ t.libs << "test/unit"
26
+ t.test_files = FileList['test/unit/**/test*.rb']
27
+ end
28
+
29
+ desc "Update the change log."
30
+ task :change_log do
31
+ %x[git log --pretty=short --grep=release > changelog]
32
+ %x[git commit changelog --amend --reuse-message HEAD]
33
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.2
data/changelog ADDED
@@ -0,0 +1,29 @@
1
+ commit da32dcd9da5cf9c8e3a7edc76465d032e5ca433d
2
+ Author: Gareth Reeves <greeves@drwholdings.com>
3
+
4
+ in this release (0.2.2)
5
+ -improved schedule method names on Fiber
6
+
7
+ commit e6d7e3a6fb4a52ee89876fecfd65f9ef2a46b711
8
+ Author: Gareth Reeves <greeves@drwholdings.com>
9
+
10
+ in this release (0.2.1)
11
+ - fixed gem problems (hopefully)
12
+
13
+ commit ab615acde9742dac47104a42b5a6b92c7c308272
14
+ Author: Gareth Reeves <greeves@drwholdings.com>
15
+
16
+ in this release (0.2.0)
17
+ - wrapped channel and fiber to give them more of a ruby like interface
18
+
19
+ commit db7b77419317c18c664c4fe0858307ab646a2762
20
+ Author: Gareth Reeves <greeves@drwholdings.com>
21
+
22
+ in this release (0.1.2)
23
+ - nothing, trying gem build
24
+
25
+ commit a85424f26dd0af757a78dc4c066fc0eb328cc377
26
+ Author: Gareth Reeves <greeves@drwholdings.com>
27
+
28
+ in this release (0.1.1)
29
+ - everything (is the first release)
data/jretlang.gemspec ADDED
@@ -0,0 +1,154 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{jretlang}
8
+ s.version = "0.2.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Gareth Reeves"]
12
+ s.date = %q{2009-10-16}
13
+ s.description = %q{A JRuby package of jretlang}
14
+ s.email = %q{reevesg@pobox.com}
15
+ s.files = [
16
+ ".gitignore",
17
+ "Rakefile",
18
+ "VERSION",
19
+ "changelog",
20
+ "jretlang.gemspec",
21
+ "lib/jretlang.rb",
22
+ "lib/jretlang/channel.rb",
23
+ "lib/jretlang/fiber.rb",
24
+ "lib/jretlang/latch.rb",
25
+ "readme",
26
+ "test/unit/test_examples.rb",
27
+ "test/unit/unit_test_helper.rb",
28
+ "vendor/jetlang-0.2.0.jar",
29
+ "vendor/jetlang-0.2.0/jetlang-0.2.0-sources.jar",
30
+ "vendor/jetlang-0.2.0/site/apidocs/allclasses-frame.html",
31
+ "vendor/jetlang-0.2.0/site/apidocs/allclasses-noframe.html",
32
+ "vendor/jetlang-0.2.0/site/apidocs/constant-values.html",
33
+ "vendor/jetlang-0.2.0/site/apidocs/deprecated-list.html",
34
+ "vendor/jetlang-0.2.0/site/apidocs/help-doc.html",
35
+ "vendor/jetlang-0.2.0/site/apidocs/index-all.html",
36
+ "vendor/jetlang-0.2.0/site/apidocs/index.html",
37
+ "vendor/jetlang-0.2.0/site/apidocs/options",
38
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/AsyncRequest.html",
39
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/BaseSubscription.html",
40
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/BatchSubscriber.html",
41
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Channel.html",
42
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/ChannelSubscription.html",
43
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Converter.html",
44
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/KeyedBatchSubscriber.html",
45
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/LastSubscriber.html",
46
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/MemoryChannel.html",
47
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/MemoryRequestChannel.html",
48
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Publisher.html",
49
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Request.html",
50
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/RequestChannel.html",
51
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Session.html",
52
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/SessionClosed.html",
53
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Subscribable.html",
54
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/Subscriber.html",
55
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/SubscriberList.html",
56
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/AsyncRequest.html",
57
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/BaseSubscription.html",
58
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/BatchSubscriber.html",
59
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Channel.html",
60
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/ChannelSubscription.html",
61
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Converter.html",
62
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/KeyedBatchSubscriber.html",
63
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/LastSubscriber.html",
64
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/MemoryChannel.html",
65
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/MemoryRequestChannel.html",
66
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Publisher.html",
67
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Request.html",
68
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/RequestChannel.html",
69
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Session.html",
70
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/SessionClosed.html",
71
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Subscribable.html",
72
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/Subscriber.html",
73
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/class-use/SubscriberList.html",
74
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-frame.html",
75
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-summary.html",
76
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-tree.html",
77
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/channels/package-use.html",
78
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/BatchExecutor.html",
79
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/BatchExecutorImpl.html",
80
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Callback.html",
81
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Disposable.html",
82
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/DisposingExecutor.html",
83
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/EventBuffer.html",
84
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/EventReader.html",
85
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Filter.html",
86
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableBlockingQueue.html",
87
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableExecutor.html",
88
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/RunnableExecutorImpl.html",
89
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/Scheduler.html",
90
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SchedulerImpl.html",
91
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SynchronousDisposingExecutor.html",
92
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/SynchronousExecutor.html",
93
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/BatchExecutor.html",
94
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/BatchExecutorImpl.html",
95
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Callback.html",
96
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Disposable.html",
97
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/DisposingExecutor.html",
98
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/EventBuffer.html",
99
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/EventReader.html",
100
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Filter.html",
101
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableBlockingQueue.html",
102
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableExecutor.html",
103
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/RunnableExecutorImpl.html",
104
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/Scheduler.html",
105
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SchedulerImpl.html",
106
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SynchronousDisposingExecutor.html",
107
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/class-use/SynchronousExecutor.html",
108
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-frame.html",
109
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-summary.html",
110
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-tree.html",
111
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/core/package-use.html",
112
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/Fiber.html",
113
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/FiberStub.ScheduledEvent.html",
114
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/FiberStub.html",
115
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/PoolFiberFactory.html",
116
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/ThreadFiber.html",
117
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/Fiber.html",
118
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/FiberStub.ScheduledEvent.html",
119
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/FiberStub.html",
120
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/PoolFiberFactory.html",
121
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/class-use/ThreadFiber.html",
122
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-frame.html",
123
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-summary.html",
124
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-tree.html",
125
+ "vendor/jetlang-0.2.0/site/apidocs/org/jetlang/fibers/package-use.html",
126
+ "vendor/jetlang-0.2.0/site/apidocs/overview-frame.html",
127
+ "vendor/jetlang-0.2.0/site/apidocs/overview-summary.html",
128
+ "vendor/jetlang-0.2.0/site/apidocs/overview-tree.html",
129
+ "vendor/jetlang-0.2.0/site/apidocs/package-list",
130
+ "vendor/jetlang-0.2.0/site/apidocs/packages",
131
+ "vendor/jetlang-0.2.0/site/apidocs/resources/inherit.gif",
132
+ "vendor/jetlang-0.2.0/site/apidocs/stylesheet.css"
133
+ ]
134
+ s.homepage = %q{http://github.com/reevesg/jretlang}
135
+ s.rdoc_options = ["--charset=UTF-8"]
136
+ s.require_paths = ["lib"]
137
+ s.rubyforge_project = %q{jretlang}
138
+ s.rubygems_version = %q{1.3.5}
139
+ s.summary = %q{A JRuby package of jretlang}
140
+ s.test_files = [
141
+ "test/unit/test_examples.rb",
142
+ "test/unit/unit_test_helper.rb"
143
+ ]
144
+
145
+ if s.respond_to? :specification_version then
146
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
147
+ s.specification_version = 3
148
+
149
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
150
+ else
151
+ end
152
+ else
153
+ end
154
+ end
@@ -0,0 +1,35 @@
1
+ class JRL::Channel < SimpleDelegator
2
+ def initialize
3
+ @mc = JRL::Channels::MemoryChannel.new
4
+ super( @mc )
5
+ end
6
+
7
+ def subscribe_on_fiber( fiber, &block )
8
+ @mc.subscribe( strip_delegate( fiber ), &block )
9
+ end
10
+
11
+ def subscribe_on_fiber_with_filter( fiber, filter_lambda, &block )
12
+ subscription = JRL::Channels::ChannelSubscription.new( strip_delegate( fiber ), block, filter_lambda )
13
+ @mc.subscribe( subscription )
14
+ end
15
+
16
+ def subscribe_on_fiber_with_batch( fiber, time, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
17
+ batch = JRL::Channels::BatchSubscriber.new( strip_delegate( fiber ), block, time, time_unit )
18
+ @mc.subscribe( batch )
19
+ end
20
+
21
+ def subscribe_on_fiber_with_batch_and_key( fiber, key_lambda, time, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
22
+ batch = JRL::Channels::KeyedBatchSubscriber.new( strip_delegate( fiber ), block, time, time_unit, key_lambda )
23
+ @mc.subscribe( batch )
24
+ end
25
+
26
+ private
27
+ def strip_delegate( fiber )
28
+ case fiber
29
+ when JRL::Fiber
30
+ fiber.__getobj__
31
+ else
32
+ fiber
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,15 @@
1
+ class JRL::Fiber < SimpleDelegator
2
+ def initialize
3
+ @f = JRL::Fibers::ThreadFiber.new
4
+ super( @f )
5
+ end
6
+
7
+ def schedule_one_time( delay, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
8
+ @f.schedule( block, delay, time_unit )
9
+ end
10
+
11
+ def schedule_repeating( delay, interval, time_unit=JRL::Concurrent::TimeUnit::SECONDS, &block )
12
+ @f.schedule_with_fixed_delay( block, delay, interval, time_unit )
13
+ end
14
+ end
15
+
@@ -0,0 +1,10 @@
1
+ class JRL::Concurrent::Latch < SimpleDelegator
2
+ def initialize( count )
3
+ @l = JRL::Concurrent::CountDownLatch.new( count )
4
+ super( @l )
5
+ end
6
+
7
+ def await( time, time_unit = JRL::Concurrent::TimeUnit::SECONDS )
8
+ @l.await( time, time_unit )
9
+ end
10
+ end
data/lib/jretlang.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'delegate'
3
+
4
+ require File.join( File.dirname(__FILE__), "..", "vendor", "jetlang-0.2.0.jar" )
5
+
6
+ module JRL
7
+ include_package 'org.jetlang.core'
8
+
9
+ module Channels
10
+ include_package 'org.jetlang.channels'
11
+ end
12
+ module Fibers
13
+ include_package 'org.jetlang.fibers'
14
+ end
15
+ module Concurrent
16
+ include_package 'java.util.concurrent'
17
+ end
18
+ end
19
+
20
+ require 'jretlang/latch'
21
+ require 'jretlang/channel'
22
+ require 'jretlang/fiber'
data/readme ADDED
@@ -0,0 +1 @@
1
+ jretlang is a packaging and thin wrapping of jetlang. Thats it.
@@ -0,0 +1,142 @@
1
+ require File.dirname(__FILE__) + '/unit_test_helper'
2
+
3
+ class TestChannel < Test::Unit::TestCase
4
+ def setup
5
+ @fiber = JRL::Fiber.new
6
+ @channel = JRL::Channel.new
7
+ @fiber.start
8
+ end
9
+
10
+ def latch( count )
11
+ JRL::Concurrent::Latch.new( count )
12
+ end
13
+
14
+ def teardown
15
+ @fiber.dispose
16
+ end
17
+
18
+ def test_pub_sub
19
+ l = latch( 1 )
20
+
21
+ result = nil
22
+ @channel.subscribe_on_fiber( @fiber ) { |msg| result = msg; l.count_down }
23
+ @channel.publish "Hello"
24
+
25
+ assert l.await( 1 )
26
+ assert_equal "Hello", result
27
+ end
28
+
29
+ def test_pub_sub_with_thread_pool
30
+ service = JRL::Concurrent::Executors.newCachedThreadPool();
31
+ fact = JRL::Fibers::PoolFiberFactory.new(service);
32
+ fiber_from_fact = fact.create
33
+ fiber_from_fact.start
34
+ l = latch( 1 )
35
+
36
+ result = nil
37
+ @channel.subscribe_on_fiber( fiber_from_fact ) { |msg| result = msg; l.count_down }
38
+ @channel.publish "Hello"
39
+
40
+ l.await( 1.5 )
41
+ assert_equal "Hello", result
42
+
43
+ fact.dispose
44
+ fiber_from_fact.dispose
45
+ service.shutdown
46
+ end
47
+
48
+ def test_fiber_schedule
49
+ l = latch( 1 )
50
+ @fiber.schedule_one_time( 0.01 ) { l.count_down }
51
+ assert l.await( 1 )
52
+ end
53
+
54
+ def test_fiber_schedule_recurring
55
+ l = latch( 5 )
56
+ @fiber.schedule_repeating( 1, 2, JRL::Concurrent::TimeUnit::MILLISECONDS ) { l.count_down }
57
+ assert l.await( 1 )
58
+ end
59
+
60
+ def test_unsubscribe
61
+ l1 = latch( 1 )
62
+ l2 = latch( 2 )
63
+ unsub = @channel.subscribe_on_fiber( @fiber ) { |msg| l1.count_down; l2.count_down }
64
+
65
+ @channel.publish( "one" )
66
+ assert l1.await( 5 )
67
+ unsub.dispose
68
+ @channel.publish( "two" )
69
+ assert !l2.await( 0.01 )
70
+ end
71
+
72
+ def test_pub_sub_with_filter
73
+ l = latch( 2 )
74
+ results = []
75
+ filter = lambda { |msg| msg % 2 == 0 }
76
+
77
+ @channel.subscribe_on_fiber_with_filter( @fiber, filter ) { |msg| results << msg; l.count_down }
78
+ 4.times{ |i| @channel.publish( i ) }
79
+
80
+ assert l.await( 1 )
81
+ assert_equal [0,2], results
82
+ end
83
+
84
+ def test_batching
85
+ l = latch( 10 )
86
+ total_msgs = 0
87
+ batches = []
88
+ @channel.subscribe_on_fiber_with_batch( @fiber, 0 ) do |msg|
89
+ batches << msg
90
+ total_msgs += msg.size
91
+ msg.size.times{ l.count_down }
92
+ end
93
+
94
+ 10.times{ |i| @channel.publish( i ) }
95
+
96
+ assert l.await( 1 )
97
+ assert 10 > batches.size
98
+ assert_equal 10, total_msgs
99
+ end
100
+
101
+ def test_batching_with_key
102
+ l = latch( 9 )
103
+ total_msgs = 0
104
+ batches = []
105
+ key_resolver = lambda { |msg| msg.to_s }
106
+ @channel.subscribe_on_fiber_with_batch_and_key( @fiber, key_resolver, 0 ) do |msg|
107
+ batches << msg
108
+ total_msgs += msg.size
109
+ msg.size.times{ l.count_down }
110
+ end
111
+
112
+ [0,1,2,3,4,5,6,7,8,8].each{ |i| @channel.publish( i ) }
113
+
114
+ assert 9 > batches.size
115
+ assert l.await( 1 )
116
+ assert_equal 9, total_msgs
117
+ end
118
+
119
+ def test_simple_request_response
120
+ reply_fiber = JRL::Fibers::ThreadFiber.new
121
+ reply_fiber.start
122
+ request_channel = JRL::Channels::MemoryRequestChannel.new
123
+ l = latch( 1 )
124
+
125
+ request_channel.subscribe( reply_fiber ) { |msg| assert_equal 'hello', msg.get_request; msg.reply( 1 ) }
126
+
127
+ response_callback = lambda { |msg| assert_equal 1, msg; l.count_down }
128
+
129
+ JRL::Channels::AsyncRequest.with_one_reply( @fiber.__getobj__, request_channel, 'hello', response_callback )
130
+ assert l.await( 1 )
131
+
132
+ reply_fiber.dispose
133
+ end
134
+
135
+ def test_request_reply_blocking
136
+ reply_queue = JRL::Concurrent::ArrayBlockingQueue.new( 1 )
137
+ @channel.subscribe_on_fiber( @fiber ) { |queue| queue.put( 'hello' ) }
138
+ @channel.publish( reply_queue )
139
+
140
+ assert_equal "hello", reply_queue.poll( 1, JRL::Concurrent::TimeUnit::SECONDS )
141
+ end
142
+ end
@@ -0,0 +1,6 @@
1
+ require 'java'
2
+ require File.join( File.dirname(__FILE__), "..", "..", "lib", "jretlang" )
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'mocha'
@@ -0,0 +1,106 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <!--NewPage-->
3
+ <HTML>
4
+ <HEAD>
5
+ <!-- Generated by javadoc (build 1.6.0_15) on Sat Sep 05 11:49:22 CDT 2009 -->
6
+ <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
7
+ <TITLE>
8
+ All Classes (Jetlang 0.2.0 API)
9
+ </TITLE>
10
+
11
+ <META NAME="date" CONTENT="2009-09-05">
12
+
13
+ <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
14
+
15
+
16
+ </HEAD>
17
+
18
+ <BODY BGCOLOR="white">
19
+ <FONT size="+1" CLASS="FrameHeadingFont">
20
+ <B>All Classes</B></FONT>
21
+ <BR>
22
+
23
+ <TABLE BORDER="0" WIDTH="100%" SUMMARY="">
24
+ <TR>
25
+ <TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="org/jetlang/channels/AsyncRequest.html" title="class in org.jetlang.channels" target="classFrame">AsyncRequest</A>
26
+ <BR>
27
+ <A HREF="org/jetlang/channels/BaseSubscription.html" title="class in org.jetlang.channels" target="classFrame">BaseSubscription</A>
28
+ <BR>
29
+ <A HREF="org/jetlang/core/BatchExecutor.html" title="interface in org.jetlang.core" target="classFrame"><I>BatchExecutor</I></A>
30
+ <BR>
31
+ <A HREF="org/jetlang/core/BatchExecutorImpl.html" title="class in org.jetlang.core" target="classFrame">BatchExecutorImpl</A>
32
+ <BR>
33
+ <A HREF="org/jetlang/channels/BatchSubscriber.html" title="class in org.jetlang.channels" target="classFrame">BatchSubscriber</A>
34
+ <BR>
35
+ <A HREF="org/jetlang/core/Callback.html" title="interface in org.jetlang.core" target="classFrame"><I>Callback</I></A>
36
+ <BR>
37
+ <A HREF="org/jetlang/channels/Channel.html" title="interface in org.jetlang.channels" target="classFrame"><I>Channel</I></A>
38
+ <BR>
39
+ <A HREF="org/jetlang/channels/ChannelSubscription.html" title="class in org.jetlang.channels" target="classFrame">ChannelSubscription</A>
40
+ <BR>
41
+ <A HREF="org/jetlang/channels/Converter.html" title="interface in org.jetlang.channels" target="classFrame"><I>Converter</I></A>
42
+ <BR>
43
+ <A HREF="org/jetlang/core/Disposable.html" title="interface in org.jetlang.core" target="classFrame"><I>Disposable</I></A>
44
+ <BR>
45
+ <A HREF="org/jetlang/core/DisposingExecutor.html" title="interface in org.jetlang.core" target="classFrame"><I>DisposingExecutor</I></A>
46
+ <BR>
47
+ <A HREF="org/jetlang/core/EventBuffer.html" title="class in org.jetlang.core" target="classFrame">EventBuffer</A>
48
+ <BR>
49
+ <A HREF="org/jetlang/core/EventReader.html" title="interface in org.jetlang.core" target="classFrame"><I>EventReader</I></A>
50
+ <BR>
51
+ <A HREF="org/jetlang/fibers/Fiber.html" title="interface in org.jetlang.fibers" target="classFrame"><I>Fiber</I></A>
52
+ <BR>
53
+ <A HREF="org/jetlang/fibers/FiberStub.html" title="class in org.jetlang.fibers" target="classFrame">FiberStub</A>
54
+ <BR>
55
+ <A HREF="org/jetlang/fibers/FiberStub.ScheduledEvent.html" title="class in org.jetlang.fibers" target="classFrame">FiberStub.ScheduledEvent</A>
56
+ <BR>
57
+ <A HREF="org/jetlang/core/Filter.html" title="interface in org.jetlang.core" target="classFrame"><I>Filter</I></A>
58
+ <BR>
59
+ <A HREF="org/jetlang/channels/KeyedBatchSubscriber.html" title="class in org.jetlang.channels" target="classFrame">KeyedBatchSubscriber</A>
60
+ <BR>
61
+ <A HREF="org/jetlang/channels/LastSubscriber.html" title="class in org.jetlang.channels" target="classFrame">LastSubscriber</A>
62
+ <BR>
63
+ <A HREF="org/jetlang/channels/MemoryChannel.html" title="class in org.jetlang.channels" target="classFrame">MemoryChannel</A>
64
+ <BR>
65
+ <A HREF="org/jetlang/channels/MemoryRequestChannel.html" title="class in org.jetlang.channels" target="classFrame">MemoryRequestChannel</A>
66
+ <BR>
67
+ <A HREF="org/jetlang/fibers/PoolFiberFactory.html" title="class in org.jetlang.fibers" target="classFrame">PoolFiberFactory</A>
68
+ <BR>
69
+ <A HREF="org/jetlang/channels/Publisher.html" title="interface in org.jetlang.channels" target="classFrame"><I>Publisher</I></A>
70
+ <BR>
71
+ <A HREF="org/jetlang/channels/Request.html" title="interface in org.jetlang.channels" target="classFrame"><I>Request</I></A>
72
+ <BR>
73
+ <A HREF="org/jetlang/channels/RequestChannel.html" title="interface in org.jetlang.channels" target="classFrame"><I>RequestChannel</I></A>
74
+ <BR>
75
+ <A HREF="org/jetlang/core/RunnableBlockingQueue.html" title="class in org.jetlang.core" target="classFrame">RunnableBlockingQueue</A>
76
+ <BR>
77
+ <A HREF="org/jetlang/core/RunnableExecutor.html" title="interface in org.jetlang.core" target="classFrame"><I>RunnableExecutor</I></A>
78
+ <BR>
79
+ <A HREF="org/jetlang/core/RunnableExecutorImpl.html" title="class in org.jetlang.core" target="classFrame">RunnableExecutorImpl</A>
80
+ <BR>
81
+ <A HREF="org/jetlang/core/Scheduler.html" title="interface in org.jetlang.core" target="classFrame"><I>Scheduler</I></A>
82
+ <BR>
83
+ <A HREF="org/jetlang/core/SchedulerImpl.html" title="class in org.jetlang.core" target="classFrame">SchedulerImpl</A>
84
+ <BR>
85
+ <A HREF="org/jetlang/channels/Session.html" title="interface in org.jetlang.channels" target="classFrame"><I>Session</I></A>
86
+ <BR>
87
+ <A HREF="org/jetlang/channels/SessionClosed.html" title="interface in org.jetlang.channels" target="classFrame"><I>SessionClosed</I></A>
88
+ <BR>
89
+ <A HREF="org/jetlang/channels/Subscribable.html" title="interface in org.jetlang.channels" target="classFrame"><I>Subscribable</I></A>
90
+ <BR>
91
+ <A HREF="org/jetlang/channels/Subscriber.html" title="interface in org.jetlang.channels" target="classFrame"><I>Subscriber</I></A>
92
+ <BR>
93
+ <A HREF="org/jetlang/channels/SubscriberList.html" title="class in org.jetlang.channels" target="classFrame">SubscriberList</A>
94
+ <BR>
95
+ <A HREF="org/jetlang/core/SynchronousDisposingExecutor.html" title="class in org.jetlang.core" target="classFrame">SynchronousDisposingExecutor</A>
96
+ <BR>
97
+ <A HREF="org/jetlang/core/SynchronousExecutor.html" title="class in org.jetlang.core" target="classFrame">SynchronousExecutor</A>
98
+ <BR>
99
+ <A HREF="org/jetlang/fibers/ThreadFiber.html" title="class in org.jetlang.fibers" target="classFrame">ThreadFiber</A>
100
+ <BR>
101
+ </FONT></TD>
102
+ </TR>
103
+ </TABLE>
104
+
105
+ </BODY>
106
+ </HTML>