r2corba 1.4.1-x86-mingw32

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 (267) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +159 -0
  3. data/LICENSE +59 -0
  4. data/README +62 -0
  5. data/THANKS +52 -0
  6. data/bin/r2corba +8 -0
  7. data/bin/r2corba.bat +20 -0
  8. data/bin/ridlc +11 -0
  9. data/bin/ridlc.bat +23 -0
  10. data/bin/rins +7 -0
  11. data/bin/rins.bat +19 -0
  12. data/ext/.keep +0 -0
  13. data/lib/corba/cbase/IORMap.rb +33 -0
  14. data/lib/corba/cbase/ORB.rb +231 -0
  15. data/lib/corba/cbase/Request.rb +134 -0
  16. data/lib/corba/cbase/Streams.rb +129 -0
  17. data/lib/corba/cbase/Stub.rb +19 -0
  18. data/lib/corba/cbase/Typecode.rb +441 -0
  19. data/lib/corba/cbase/Values.rb +129 -0
  20. data/lib/corba/cbase/exception.rb +66 -0
  21. data/lib/corba/cbase/poa.rb +23 -0
  22. data/lib/corba/cbase/policies.rb +78 -0
  23. data/lib/corba/cbase/post_require.rb +14 -0
  24. data/lib/corba/cbase/require.rb +28 -0
  25. data/lib/corba/cmds/base.rb +85 -0
  26. data/lib/corba/cmds/test.rb +30 -0
  27. data/lib/corba/common/Any.rb +91 -0
  28. data/lib/corba/common/IDL.rb +104 -0
  29. data/lib/corba/common/ORB.rb +368 -0
  30. data/lib/corba/common/Object.rb +208 -0
  31. data/lib/corba/common/Request.rb +20 -0
  32. data/lib/corba/common/Servant.rb +108 -0
  33. data/lib/corba/common/Struct.rb +22 -0
  34. data/lib/corba/common/Stub.rb +79 -0
  35. data/lib/corba/common/Typecode.rb +1121 -0
  36. data/lib/corba/common/Union.rb +56 -0
  37. data/lib/corba/common/Values.rb +92 -0
  38. data/lib/corba/common/const.rb +22 -0
  39. data/lib/corba/common/exception.rb +68 -0
  40. data/lib/corba/common/require.rb +27 -0
  41. data/lib/corba/common/version.rb +22 -0
  42. data/lib/corba/idl/BiDirPolicyC.rb +63 -0
  43. data/lib/corba/idl/CosNamingC.rb +461 -0
  44. data/lib/corba/idl/CosNamingS.rb +309 -0
  45. data/lib/corba/idl/IDL.rb +21 -0
  46. data/lib/corba/idl/IORTable.pidl +62 -0
  47. data/lib/corba/idl/IORTableC.rb +117 -0
  48. data/lib/corba/idl/MessagingC.rb +904 -0
  49. data/lib/corba/idl/POAC.rb +930 -0
  50. data/lib/corba/idl/TAO_Ext.pidl +46 -0
  51. data/lib/corba/idl/TAO_ExtC.rb +179 -0
  52. data/lib/corba/idl/r2c_orb.rb +572 -0
  53. data/lib/corba/idl/require.rb +20 -0
  54. data/lib/corba/jbase/Any.rb +273 -0
  55. data/lib/corba/jbase/IORMap.rb +36 -0
  56. data/lib/corba/jbase/ORB.rb +99 -0
  57. data/lib/corba/jbase/Object.rb +98 -0
  58. data/lib/corba/jbase/Request.rb +226 -0
  59. data/lib/corba/jbase/Servant.rb +247 -0
  60. data/lib/corba/jbase/ServerRequest.rb +128 -0
  61. data/lib/corba/jbase/Streams.rb +671 -0
  62. data/lib/corba/jbase/Stub.rb +38 -0
  63. data/lib/corba/jbase/Typecode.rb +520 -0
  64. data/lib/corba/jbase/Values.rb +173 -0
  65. data/lib/corba/jbase/exception.rb +106 -0
  66. data/lib/corba/jbase/poa.rb +229 -0
  67. data/lib/corba/jbase/policies.rb +300 -0
  68. data/lib/corba/jbase/post_require.rb +14 -0
  69. data/lib/corba/jbase/require.rb +86 -0
  70. data/lib/corba/naming.rb +14 -0
  71. data/lib/corba/naming_service.rb +15 -0
  72. data/lib/corba/poa.rb +15 -0
  73. data/lib/corba/policies.rb +18 -0
  74. data/lib/corba/require.rb +17 -0
  75. data/lib/corba/svcs/ins/cos_naming.rb +426 -0
  76. data/lib/corba/svcs/ins/ins.rb +526 -0
  77. data/lib/corba/svcs/ins/naming_service.rb +119 -0
  78. data/lib/corba.rb +16 -0
  79. data/lib/ridlbe/ruby/config.rb +336 -0
  80. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  81. data/lib/ridlbe/ruby/require.rb +16 -0
  82. data/lib/ridlbe/ruby/walker.rb +1582 -0
  83. data/mkrf_conf_bingem.rb +101 -0
  84. data/rakelib/bin.rake +80 -0
  85. data/rakelib/bin.rb +146 -0
  86. data/rakelib/build.rake +87 -0
  87. data/rakelib/config.rake +52 -0
  88. data/rakelib/config.rb +450 -0
  89. data/rakelib/ext.rake +242 -0
  90. data/rakelib/ext.rb +308 -0
  91. data/rakelib/ext_r2tao.rb +232 -0
  92. data/rakelib/gem.rake +212 -0
  93. data/rakelib/gem.rb +146 -0
  94. data/rakelib/package.rake +26 -0
  95. data/rakelib/test.rake +23 -0
  96. data/test/BiDirectional/Test.idl +34 -0
  97. data/test/BiDirectional/client.rb +132 -0
  98. data/test/BiDirectional/run_test.rb +68 -0
  99. data/test/BiDirectional/server.ior +1 -0
  100. data/test/BiDirectional/server.rb +169 -0
  101. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -0
  104. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
  105. data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
  106. data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
  107. data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
  108. data/test/CORBA_Services/Naming/Corbaname/corbaname.ior +1 -0
  109. data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -0
  110. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
  111. data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
  112. data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
  113. data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
  114. data/test/CORBA_Services/Naming/Simple/ins.ior +1 -0
  115. data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
  116. data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
  117. data/test/Collocation/Diamond.idl +39 -0
  118. data/test/Collocation/run_test.rb +52 -0
  119. data/test/Collocation/test.rb +195 -0
  120. data/test/Connect_Timeout/Test.idl +27 -0
  121. data/test/Connect_Timeout/client.rb +111 -0
  122. data/test/Connect_Timeout/run_test.rb +52 -0
  123. data/test/DII/Test.idl +27 -0
  124. data/test/DII/client.rb +115 -0
  125. data/test/DII/run_test.rb +69 -0
  126. data/test/DII/server.ior +1 -0
  127. data/test/DII/server.rb +95 -0
  128. data/test/DSI/Test.idl +27 -0
  129. data/test/DSI/client.rb +66 -0
  130. data/test/DSI/run_test.rb +69 -0
  131. data/test/DSI/server.ior +1 -0
  132. data/test/DSI/server.rb +106 -0
  133. data/test/Exceptions/Test.idl +48 -0
  134. data/test/Exceptions/client.rb +118 -0
  135. data/test/Exceptions/run_test.rb +69 -0
  136. data/test/Exceptions/server.ior +1 -0
  137. data/test/Exceptions/server.rb +131 -0
  138. data/test/Hello/Test.idl +27 -0
  139. data/test/Hello/client.rb +78 -0
  140. data/test/Hello/run_test.rb +71 -0
  141. data/test/Hello/server.rb +95 -0
  142. data/test/IDL_Test/Test.idl +113 -0
  143. data/test/IDL_Test/Test_inc.idl +17 -0
  144. data/test/IDL_Test/client.rb +102 -0
  145. data/test/IDL_Test/run_test.rb +69 -0
  146. data/test/IDL_Test/server.ior +1 -0
  147. data/test/IDL_Test/server.rb +99 -0
  148. data/test/IORMap/Test.idl +27 -0
  149. data/test/IORMap/client.rb +73 -0
  150. data/test/IORMap/run_test.rb +69 -0
  151. data/test/IORMap/server.ior +1 -0
  152. data/test/IORMap/server.rb +114 -0
  153. data/test/IORTable/Test.idl +27 -0
  154. data/test/IORTable/client.rb +75 -0
  155. data/test/IORTable/run_test.rb +69 -0
  156. data/test/IORTable/server.ior +1 -0
  157. data/test/IORTable/server.rb +130 -0
  158. data/test/Implicit_Conversion/Test.idl +31 -0
  159. data/test/Implicit_Conversion/client.rb +110 -0
  160. data/test/Implicit_Conversion/run_test.rb +69 -0
  161. data/test/Implicit_Conversion/server.ior +1 -0
  162. data/test/Implicit_Conversion/server.rb +99 -0
  163. data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
  164. data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
  165. data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
  166. data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
  167. data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -0
  168. data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -0
  169. data/test/Multi_Threading/Simple/Test.idl +27 -0
  170. data/test/Multi_Threading/Simple/client.rb +88 -0
  171. data/test/Multi_Threading/Simple/run_test.rb +69 -0
  172. data/test/Multi_Threading/Simple/server.ior +1 -0
  173. data/test/Multi_Threading/Simple/server.rb +118 -0
  174. data/test/Multi_Threading/Threads/Test.idl +31 -0
  175. data/test/Multi_Threading/Threads/client.rb +80 -0
  176. data/test/Multi_Threading/Threads/run_test.rb +76 -0
  177. data/test/Multi_Threading/Threads/server.ior +1 -0
  178. data/test/Multi_Threading/Threads/server.rb +119 -0
  179. data/test/Multi_Threading/Threads/watchdog.ior +1 -0
  180. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  181. data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
  182. data/test/Multiple_Servant_Interfaces/client.rb +70 -0
  183. data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
  184. data/test/Multiple_Servant_Interfaces/server.ior +1 -0
  185. data/test/Multiple_Servant_Interfaces/server.rb +102 -0
  186. data/test/Nil/Test.idl +27 -0
  187. data/test/Nil/run_test.rb +52 -0
  188. data/test/Nil/test.rb +78 -0
  189. data/test/OBV/AbstractInterface/client.rb +179 -0
  190. data/test/OBV/AbstractInterface/run_test.rb +69 -0
  191. data/test/OBV/AbstractInterface/server.ior +1 -0
  192. data/test/OBV/AbstractInterface/server.rb +149 -0
  193. data/test/OBV/AbstractInterface/test.idl +53 -0
  194. data/test/OBV/Custom/OBV.idl +18 -0
  195. data/test/OBV/Custom/OBV_impl.rb +40 -0
  196. data/test/OBV/Custom/client.rb +86 -0
  197. data/test/OBV/Custom/run_test.rb +69 -0
  198. data/test/OBV/Custom/server.ior +1 -0
  199. data/test/OBV/Custom/server.rb +100 -0
  200. data/test/OBV/Simple/OBV.idl +15 -0
  201. data/test/OBV/Simple/OBV_impl.rb +26 -0
  202. data/test/OBV/Simple/client.rb +86 -0
  203. data/test/OBV/Simple/run_test.rb +69 -0
  204. data/test/OBV/Simple/server.ior +1 -0
  205. data/test/OBV/Simple/server.rb +100 -0
  206. data/test/OBV/Simple_Event/Event.idl +15 -0
  207. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  208. data/test/OBV/Simple_Event/client.rb +86 -0
  209. data/test/OBV/Simple_Event/run_test.rb +69 -0
  210. data/test/OBV/Simple_Event/server.ior +1 -0
  211. data/test/OBV/Simple_Event/server.rb +100 -0
  212. data/test/OBV/Supports/client.rb +116 -0
  213. data/test/OBV/Supports/run_test.rb +69 -0
  214. data/test/OBV/Supports/server.ior +1 -0
  215. data/test/OBV/Supports/server.rb +103 -0
  216. data/test/OBV/Supports/supports.idl +33 -0
  217. data/test/OBV/Supports/supports_impl.rb +57 -0
  218. data/test/OBV/Tree/client.rb +116 -0
  219. data/test/OBV/Tree/run_test.rb +69 -0
  220. data/test/OBV/Tree/server.ior +1 -0
  221. data/test/OBV/Tree/server.rb +117 -0
  222. data/test/OBV/Tree/test.idl +32 -0
  223. data/test/OBV/Truncatable/Extra.idl +27 -0
  224. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  225. data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
  226. data/test/OBV/Truncatable/client.rb +279 -0
  227. data/test/OBV/Truncatable/run_test.rb +69 -0
  228. data/test/OBV/Truncatable/server.ior +1 -0
  229. data/test/OBV/Truncatable/server.rb +89 -0
  230. data/test/OBV/ValueBox/client.rb +497 -0
  231. data/test/OBV/ValueBox/run_test.rb +69 -0
  232. data/test/OBV/ValueBox/server.ior +1 -0
  233. data/test/OBV/ValueBox/server.rb +271 -0
  234. data/test/OBV/ValueBox/valuebox.idl +101 -0
  235. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  236. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  237. data/test/OBV/ValueBox/vb_union.idl +21 -0
  238. data/test/Object/Test.idl +27 -0
  239. data/test/Object/client.rb +103 -0
  240. data/test/Object/run_test.rb +69 -0
  241. data/test/Object/server.ior +1 -0
  242. data/test/Object/server.rb +126 -0
  243. data/test/POA/Test.idl +27 -0
  244. data/test/POA/run_test.rb +52 -0
  245. data/test/POA/test.rb +112 -0
  246. data/test/Param_Test/Test.idl +182 -0
  247. data/test/Param_Test/client.rb +277 -0
  248. data/test/Param_Test/run_test.rb +69 -0
  249. data/test/Param_Test/server.ior +1 -0
  250. data/test/Param_Test/server.rb +296 -0
  251. data/test/Performance/Simple/Test.idl +27 -0
  252. data/test/Performance/Simple/client.rb +90 -0
  253. data/test/Performance/Simple/run_test.rb +69 -0
  254. data/test/Performance/Simple/server.ior +1 -0
  255. data/test/Performance/Simple/server.rb +95 -0
  256. data/test/Policies/Test.idl +27 -0
  257. data/test/Policies/run_test.rb +52 -0
  258. data/test/Policies/test.rb +144 -0
  259. data/test/Timeout/client.rb +207 -0
  260. data/test/Timeout/run_test.rb +69 -0
  261. data/test/Timeout/server.ior +1 -0
  262. data/test/Timeout/server.rb +109 -0
  263. data/test/Timeout/test.idl +19 -0
  264. data/test/lib/assert.rb +43 -0
  265. data/test/lib/test.rb +542 -0
  266. data/test/test_runner.rb +193 -0
  267. metadata +342 -0
@@ -0,0 +1,231 @@
1
+ #--------------------------------------------------------------------
2
+ # ORB.rb - C++/TAO CORBA ORB definitions
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+ require 'monitor'
14
+
15
+ module R2CORBA
16
+ module CORBA
17
+
18
+ module ORB
19
+
20
+ @@_default_args = []
21
+ unless R2CORBA::TAO::RUBY_THREAD_SUPPORT
22
+ # to prevent problems with "green threads" model of Ruby <=1.8.x run TAO
23
+ # without nested upcalls; preventing thread reuse and re-entrancy
24
+ @@_default_args << '-ORBSvcConfDirective'
25
+ @@_default_args << 'static Client_Strategy_Factory "-ORBClientConnectionHandler MT_NOUPCALL"'
26
+ end
27
+
28
+ ## init() or init(arg1, arg2, arg3[, ...]) or init(orb_id, prop = {}) or init(argv, orb_id, prop={}) or init(argv, prop={})
29
+ def self.init(*args)
30
+ n_orb = if args.empty? && @@_default_args.empty?
31
+ @@cached_orb = CORBA::Native::ORB.init
32
+ else
33
+ argv = []
34
+ orb_id = nil
35
+ prop = nil
36
+ a1, a2, a3 = args
37
+ if Array === a1
38
+ raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size>3
39
+ argv = a1
40
+ orb_id = (Hash === a2 ? nil : a2)
41
+ prop = (Hash === a2 ? a2 : a3)
42
+ elsif args.size == 1 || Hash === a2
43
+ raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size>2
44
+ orb_id = a1
45
+ prop = a2
46
+ else
47
+ argv = args
48
+ end
49
+ raise ArgumentError, "Invalid argument #{prop.class}; expected Hash" unless prop.nil? || Hash === prop
50
+ unless prop.nil?()
51
+ prop.inject(argv) {|a,(k,v)| a << k; a << v; a}
52
+ end
53
+ @@cached_orb = CORBA::Native::ORB.init(argv.collect {|a| a.to_s }.concat(@@_default_args), orb_id.nil?() ? nil : orb_id.to_s)
54
+ end
55
+ unless n_orb.nil?() || @@vf_queue.empty?()
56
+ @@vf_queue.process_all { |vfklass| vfklass._check_factory }
57
+ end
58
+ @@wrapper_klass.new(n_orb)
59
+ end
60
+
61
+ =begin
62
+ // Thread related operations
63
+ =end
64
+
65
+ # ret [boolean, <time left>] if !timeout.nil? else boolean
66
+ def work_pending(timeout = nil)
67
+ begin
68
+ self.orb_.work_pending(timeout)
69
+ rescue ::NativeException
70
+ CORBA::Exception.native2r($!)
71
+ end
72
+ end
73
+
74
+ # ret <time left> if !timeout.nil? else void
75
+ def perform_work(timeout = nil)
76
+ begin
77
+ self.orb_.perform_work(timeout)
78
+ rescue ::NativeException
79
+ CORBA::Exception.native2r($!)
80
+ end
81
+ end
82
+
83
+ # safe to run in thread; even in pre-1.9 MRI Ruby
84
+ # ret <time left> if !timeout.nil? else void
85
+ def run(timeout = nil)
86
+ if R2CORBA::TAO::RUBY_THREAD_SUPPORT
87
+ begin
88
+ self.orb_.run(timeout)
89
+ rescue ::NativeException
90
+ CORBA::Exception.native2r($!)
91
+ end
92
+ else
93
+ @running ||= true
94
+ raise CORBA::BAD_INV_ORDER.new('ORB has been shutdown', 0, CORBA::COMPLETED_NO) if @shutdown
95
+ while (timeout.nil? or timeout>0) and !@shutdown
96
+ to = timeout || 0.05
97
+ f, to = self.work_pending(to)
98
+ timeout = to unless timeout.nil?
99
+ if f and !@shutdown and (timeout.nil? or timeout>0)
100
+ to = timeout || 0.05
101
+ to = self.perform_work(to)
102
+ timeout = to unless timeout.nil?
103
+ end
104
+ Thread.pass unless @shutdown
105
+ end
106
+ end
107
+ end
108
+
109
+ unless R2CORBA::TAO::RUBY_THREAD_SUPPORT
110
+ # starts blocking ORB event loop in MRI Ruby 1.8, i.e. no thread support
111
+ # ret <time left> if !timeout.nil? else void
112
+ def run_blocked(timeout = nil)
113
+ begin
114
+ self.orb_.run(timeout)
115
+ rescue ::NativeException
116
+ CORBA::Exception.native2r($!)
117
+ end
118
+ end
119
+ end
120
+
121
+ # boolean wait_for_completion
122
+ # ret void
123
+ def shutdown(wait_for_completion = false)
124
+ if R2CORBA::TAO::RUBY_THREAD_SUPPORT or !@running
125
+ begin
126
+ self.orb_.shutdown(wait_for_completion)
127
+ rescue ::NativeException
128
+ CORBA::Exception.native2r($!)
129
+ end
130
+ else
131
+ @shutdown = true
132
+ end
133
+ end
134
+
135
+ ## custom
136
+ @@vf_queue = (Class.new(Monitor) do
137
+ def initialize
138
+ @q_ = []
139
+ super
140
+ end
141
+ def push(vfklass)
142
+ synchronize do
143
+ @q_ << vfklass
144
+ end
145
+ end
146
+ def process_all(&block)
147
+ synchronize do
148
+ @q_.each { |vf| block.call(vf) }
149
+ @q_.clear
150
+ end
151
+ end
152
+ def empty?()
153
+ f = false
154
+ synchronize do
155
+ f = @q_.empty?
156
+ end
157
+ f
158
+ end
159
+ end).new
160
+
161
+ def self._check_value_factory(vfklass)
162
+ if @@cached_orb.nil?
163
+ @@vf_queue.push(vfklass)
164
+ else
165
+ vfklass._check_factory
166
+ end
167
+ end
168
+
169
+ # custom R2CORBA extension : IORMap
170
+
171
+ def ior_map
172
+ @iormap ||= R2CORBA::IORMap.new(self)
173
+ end
174
+
175
+ end # ORB
176
+
177
+ =begin
178
+ Signal trapping
179
+ =end
180
+ private
181
+ @@sigreg = {}
182
+ def CORBA.signal_numbers
183
+ ( [1, # HUP
184
+ 2, # INT
185
+ 3, # QUIT
186
+ 5, # TRAP
187
+ 6, # ABRT
188
+ 10, # USR1
189
+ 12, # USR2
190
+ 13, # SIGPIPE
191
+ 14, # ALRM
192
+ 15, # TERM
193
+ 17, # CHLD
194
+ 18, # CONT
195
+ 19, # STOP
196
+ 23, # URG
197
+ 30, # PWR
198
+ 31 # SYS
199
+ ]) & Signal.list.values
200
+ end
201
+
202
+ def CORBA.handled_signals
203
+ @@sigreg.clear
204
+ sigs = self.signal_numbers.collect do |signum|
205
+ sigcmd = Signal.trap(signum, 'DEFAULT')
206
+ Signal.trap(signum, sigcmd)
207
+ @@sigreg[signum] = sigcmd
208
+ if sigcmd.respond_to?(:call) or ['IGNORE','SIG_IGN','EXIT'].include?(sigcmd.to_s)
209
+ signum
210
+ else
211
+ nil
212
+ end
213
+ end.compact
214
+ sigs
215
+ end
216
+
217
+ def CORBA.handle_signal(signum)
218
+ if @@sigreg.has_key?(signum)
219
+ if @@sigreg[signum].respond_to?(:call)
220
+ if @@sigreg[signum].respond_to?(:parameters) && @@sigreg[signum].parameters.size>0
221
+ @@sigreg[signum].call(signum)
222
+ else
223
+ @@sigreg[signum].call
224
+ end
225
+ elsif @@sigreg[signum].to_s == 'EXIT'
226
+ Kernel.exit!(signum)
227
+ end
228
+ end
229
+ end
230
+ end # CORBA
231
+ end # R2CORBA
@@ -0,0 +1,134 @@
1
+ #--------------------------------------------------------------------
2
+ # Request.rb - C++/TAO CORBA Request definitions
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+ module R2CORBA
14
+ module CORBA
15
+
16
+ module Request
17
+
18
+ def add_in_arg(tc, val, nm='')
19
+ self._arguments << [nm, CORBA::ARG_IN, tc, val]
20
+ self._arguments.size
21
+ end
22
+
23
+ def add_out_arg(tc, nm='')
24
+ self._arguments << [nm, CORBA::ARG_OUT, tc]
25
+ self._arguments.size
26
+ end
27
+
28
+ def add_inout_arg(tc, val, nm='')
29
+ self._arguments << [nm, CORBA::ARG_INOUT, tc, val]
30
+ self._arguments.size
31
+ end
32
+
33
+ def arguments
34
+ self._arguments
35
+ end
36
+
37
+ def arguments=(*args)
38
+ if args.size == 1
39
+ raise ArgumentError, 'invalid argument list' unless ::Array === args.first && args.first.all? {|a| ::Array === a }
40
+ args = args.first
41
+ else
42
+ raise ArgumentError, 'invalid argument list' unless args.all? {|a| ::Array === a }
43
+ end
44
+ # clear current arguments
45
+ self._arguments.clear
46
+ # add new arguments
47
+ args.each do |nm, flag, tc, val|
48
+ case flag
49
+ when CORBA::ARG_IN
50
+ self.add_in_arg(tc, val, nm)
51
+ when CORBA::ARG_OUT
52
+ self.add_out_arg(tc, nm)
53
+ when CORBA::ARG_INOUT
54
+ self.add_inout_arg(tc, val, nm)
55
+ end
56
+ end
57
+ end
58
+
59
+ def exceptions
60
+ self._exceptions
61
+ end
62
+
63
+ def exceptions=(exl)
64
+ self._exceptions.clear
65
+ begin
66
+ self._exceptions.concat(exl)
67
+ rescue
68
+ raise CORBA::BAD_PARAM.new(0, CORBA::COMPLETED_NO)
69
+ end
70
+ end
71
+
72
+ def set_return_type(tc)
73
+ @_rettc = tc
74
+ end
75
+
76
+ def return_value
77
+ return nil if @_rettc.nil? || @_rettc.kind == CORBA::TK_VOID || @_rettc.kind == CORBA::TK_NULL
78
+ self._return_value(@_rettc)
79
+ end
80
+
81
+ def invoke
82
+ self._invoke({
83
+ :arg_list => self._arguments,
84
+ :result_type => @_rettc,
85
+ :exc_list => self._exceptions
86
+ })
87
+ end
88
+
89
+ def send_oneway
90
+ self._send_oneway(self._arguments)
91
+ end
92
+
93
+ def send_deferred
94
+ self._send_deferred({
95
+ :arg_list => self._arguments,
96
+ :result_type => @_rettc,
97
+ :exc_list => self._exceptions
98
+ })
99
+ end
100
+
101
+ def poll_response
102
+ begin
103
+ ret = self._poll_response
104
+ rescue ::NativeException
105
+ CORBA::Exception.native2r($!)
106
+ end
107
+ @_args = self._get_arguments(@_args || []) if ret
108
+ ret
109
+ end
110
+
111
+ def get_response
112
+ begin
113
+ ret = self._get_response
114
+ rescue ::NativeException
115
+ CORBA::Exception.native2r($!)
116
+ end
117
+ @_args = self._get_arguments(@_args || [])
118
+ ret
119
+ end
120
+
121
+ protected
122
+
123
+ def _arguments
124
+ @_args ||= []
125
+ end
126
+
127
+ def _exceptions
128
+ @_excl ||= []
129
+ end
130
+
131
+ end
132
+
133
+ end # CORBA
134
+ end # R2CORBA
@@ -0,0 +1,129 @@
1
+ #--------------------------------------------------------------------
2
+ # Streams.rb - C++/TAO Definition of CORBA CDR Streams
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+
14
+ module R2CORBA
15
+ module CORBA
16
+ module Portable
17
+ module InputStream
18
+ def read_member(tc)
19
+ tc = tc.resolved_tc # takes care of recursive typecodes
20
+ v = case tc.kind
21
+ when TK_ANY
22
+ read_any()
23
+ when TK_BOOLEAN
24
+ read_boolean()
25
+ when TK_SHORT
26
+ read_short()
27
+ when TK_LONG
28
+ read_long()
29
+ when TK_USHORT
30
+ read_ushort()
31
+ when TK_WCHAR
32
+ read_wchar()
33
+ when TK_ULONG
34
+ read_ulong()
35
+ when TK_LONGLONG
36
+ read_longlong()
37
+ when TK_ULONGLONG
38
+ read_ulonglong()
39
+ when TK_OCTET
40
+ read_octet()
41
+ when TK_FLOAT
42
+ read_float()
43
+ when TK_DOUBLE
44
+ read_double()
45
+ when TK_LONGDOUBLE
46
+ raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
47
+ when TK_FIXED
48
+ read_fixed()
49
+ when TK_CHAR
50
+ read_char()
51
+ when TK_STRING
52
+ read_string()
53
+ when TK_WSTRING
54
+ read_wstring()
55
+ when TK_OBJREF
56
+ read_Object()
57
+ when TK_TYPECODE
58
+ read_TypeCode()
59
+ when TK_ARRAY, TK_SEQUENCE,
60
+ TK_ENUM, TK_STRUCT, TK_EXCEPT, TK_UNION,
61
+ TK_PRINCIPAL
62
+ read_construct(tc)
63
+ when TK_ABSTRACT_INTERFACE
64
+ read_Abstract()
65
+ when TK_VALUE, TK_VALUE_BOX, TK_EVENT
66
+ read_Value()
67
+ ## TODO: TK_NATIVE
68
+ end
69
+ v
70
+ end
71
+ end
72
+
73
+ module OutputStream
74
+ def write_member(tc, value)
75
+ tc = tc.resolved_tc # takes care of recursive typecodes
76
+ case tc.kind
77
+ when TK_ANY
78
+ write_any(value)
79
+ when TK_BOOLEAN
80
+ write_boolean(value)
81
+ when TK_SHORT
82
+ write_short(value)
83
+ when TK_LONG
84
+ write_long(value)
85
+ when TK_USHORT
86
+ write_ushort(value)
87
+ when TK_WCHAR
88
+ write_wchar(value)
89
+ when TK_ULONG
90
+ write_ulong(value)
91
+ when TK_LONGLONG
92
+ write_longlong(value)
93
+ when TK_ULONGLONG
94
+ write_ulonglong(value)
95
+ when TK_OCTET
96
+ write_octet(value)
97
+ when TK_FLOAT
98
+ write_float(value)
99
+ when TK_DOUBLE
100
+ write_double(value)
101
+ when TK_LONGDOUBLE
102
+ raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
103
+ when TK_FIXED
104
+ write_fixed(value)
105
+ when TK_CHAR
106
+ write_char(value)
107
+ when TK_STRING
108
+ write_string(value)
109
+ when TK_WSTRING
110
+ write_wstring(value)
111
+ when TK_OBJREF
112
+ write_Object(value)
113
+ when TK_TYPECODE
114
+ write_TypeCode(value)
115
+ when TK_ARRAY, TK_SEQUENCE,
116
+ TK_ENUM, TK_STRUCT, TK_EXCEPT, TK_UNION,
117
+ TK_PRINCIPAL
118
+ write_construct(value, tc)
119
+ when TK_ABSTRACT_INTERFACE
120
+ write_Abstract(value)
121
+ when TK_VALUE, TK_VALUE_BOX, TK_EVENT
122
+ write_Value(value)
123
+ ## TODO: TK_NATIVE
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,19 @@
1
+ #--------------------------------------------------------------------
2
+ # Stub.rb - C++/TAO CORBA Stub definitions
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+ module R2CORBA
14
+ module CORBA
15
+ module Stub
16
+ include R2CORBA::CORBA::Portable::Stub
17
+ end # Stub
18
+ end # CORBA
19
+ end # R2CORBA