r2corba 1.6.1-x64-mingw-ucrt

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