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,225 @@
1
+ #--------------------------------------------------------------------
2
+ # Request.rb - Java/JacORB 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
+ @@wrapper_klass = Class.new do
17
+ include CORBA::Request
18
+ def initialize(nreq, target)
19
+ @req_ = nreq
20
+ @target = target
21
+ end
22
+ attr_reader :req_
23
+ attr_reader :target
24
+ end
25
+
26
+ def self._wrap_native(nreq, target)
27
+ raise ArgumentError, 'Expected org.omg.CORBA.Request' unless nreq.nil? || nreq.is_a?(Native::Request)
28
+ nreq.nil?() ? nreq : @@wrapper_klass.new(nreq, target)
29
+ end
30
+
31
+ def operation
32
+ begin
33
+ self.req_.operation()
34
+ rescue ::NativeException
35
+ CORBA::Exception.native2r($!)
36
+ end
37
+ end
38
+
39
+ def add_in_arg(tc, val, nm = '')
40
+ begin
41
+ self.req_.arguments.add_value(nm, Any.to_any(val, tc).to_java(self.req_.target._orb), CORBA::ARG_IN)
42
+ rescue ::NativeException
43
+ CORBA::Exception.native2r($!)
44
+ end
45
+ self.req_.arguments.count
46
+ end
47
+
48
+ def add_out_arg(tc, nm = '')
49
+ begin
50
+ self.req_.arguments.add_value(nm, Any.to_any(nil, tc).to_java(self.req_.target._orb), CORBA::ARG_OUT)
51
+ rescue ::NativeException
52
+ CORBA::Exception.native2r($!)
53
+ end
54
+ self.req_.arguments.count
55
+ end
56
+
57
+ def add_inout_arg(tc, val, nm = '')
58
+ begin
59
+ self.req_.arguments.add_value(nm, Any.to_any(val, tc).to_java(self.req_.target._orb), CORBA::ARG_INOUT)
60
+ rescue ::NativeException
61
+ CORBA::Exception.native2r($!)
62
+ end
63
+ self.req_.arguments.count
64
+ end
65
+
66
+ def arguments
67
+ begin
68
+ nvl = self.req_.arguments
69
+ (0..nvl.count).to_a.collect do |i|
70
+ nv = nvl.item(i)
71
+ [nv.name,
72
+ nv.flags,
73
+ CORBA::TypeCode.from_java(nv.value.type),
74
+ Any.from_java(nv.value, self.req_.target._orb)]
75
+ end
76
+ rescue
77
+ CORBA::Exception.native2r($!)
78
+ end
79
+ end
80
+
81
+ def arguments=(*args)
82
+ if args.size == 1
83
+ raise ArgumentError, 'invalid argument list' unless ::Array === args.first && args.first.all? {|a| ::Array === a }
84
+ args = args.first
85
+ else
86
+ raise ArgumentError, 'invalid argument list' unless args.all? {|a| ::Array === a }
87
+ end
88
+ # clear current arguments
89
+ begin
90
+ nvl = self.req_.arguments
91
+ nvl.remove(0) while nvl.count > 0
92
+ rescue
93
+ CORBA::Exception.native2r($!)
94
+ end
95
+ # add new arguments
96
+ args.each do |nm, flag, tc, val|
97
+ case flag
98
+ when CORBA::ARG_IN
99
+ self.add_in_arg(tc, val, nm)
100
+ when CORBA::ARG_OUT
101
+ self.add_out_arg(tc, nm)
102
+ when CORBA::ARG_INOUT
103
+ self.add_inout_arg(tc, val, nm)
104
+ end
105
+ end
106
+ end
107
+
108
+ def exceptions
109
+ begin
110
+ exl = self.req_.exceptions
111
+ (0..exl.count).to_a.collect do |i|
112
+ CORBA::TypeCode.from_java(exl.item(i))
113
+ end
114
+ rescue
115
+ CORBA::Exception.native2r($!)
116
+ end
117
+ end
118
+
119
+ def exceptions=(exl)
120
+ begin
121
+ # clear current exceptions
122
+ jexl = self.req_.exceptions
123
+ jexl.remove(0) while jexl.count > 0
124
+ # add new exceptions
125
+ exl.each do |extc|
126
+ jexl.add(extc.tc_)
127
+ end
128
+ rescue
129
+ CORBA::Exception.native2r($!)
130
+ end
131
+ end
132
+
133
+ def set_return_type(tc)
134
+ @return_type = tc
135
+ begin
136
+ self.req_.set_return_type(tc.tc_)
137
+ rescue ::NativeException
138
+ CORBA::Exception.native2r($!)
139
+ end
140
+ end
141
+
142
+ def return_value
143
+ begin
144
+ Any.from_java(self.req_.return_value, self.req_.target._orb, @return_type)
145
+ rescue ::NativeException
146
+ CORBA::Exception.native2r($!)
147
+ end
148
+ end
149
+
150
+ def invoke
151
+ begin
152
+ self.req_.invoke
153
+ rescue ::NativeException
154
+ CORBA::Exception.native2r($!)
155
+ end
156
+ jex = self.req_.env().exception()
157
+ unless jex.nil?
158
+ STDERR.puts "#{jex}\n#{jex.backtrace.join("\n")}" if $VERBOSE
159
+ if jex.is_a?(CORBA::Native::SystemException)
160
+ CORBA::SystemException._raise(jex)
161
+ elsif jex.is_a?(CORBA::Native::UnknownUserException)
162
+ CORBA::UserException._raise(jex)
163
+ else
164
+ raise CORBA::UNKNOWN.new(jex.getMessage(), 0, CORBA::COMPLETED_MAYBE)
165
+ end
166
+ end
167
+ self.result
168
+ end
169
+
170
+ def send_oneway
171
+ begin
172
+ self.req_.send_oneway
173
+ rescue ::NativeException
174
+ CORBA::Exception.native2r($!)
175
+ end
176
+ end
177
+
178
+ def send_deferred
179
+ begin
180
+ self.req_.send_deferred
181
+ rescue ::NativeException
182
+ CORBA::Exception.native2r($!)
183
+ end
184
+ end
185
+
186
+ def poll_response
187
+ begin
188
+ self.req_.poll_response
189
+ rescue ::NativeException
190
+ CORBA::Exception.native2r($!)
191
+ end
192
+ end
193
+
194
+ def get_response
195
+ begin
196
+ self.req_.get_response
197
+ rescue ::NativeException
198
+ CORBA::Exception.native2r($!)
199
+ end
200
+ end
201
+
202
+ protected
203
+
204
+ def result
205
+ rc = self.req_.return_value.type.kind.value == CORBA::TK_VOID ? [] : [self.return_value]
206
+ begin
207
+ nvl = self.req_.arguments
208
+ nvl.count.times do |i|
209
+ nv = nvl.item(i)
210
+ rc << Any.from_java(nv.value, self.req_.target._orb) unless nv.flags == CORBA::ARG_IN
211
+ end
212
+ rescue
213
+ CORBA::Exception.native2r($!)
214
+ end
215
+ if rc.size < 2
216
+ return rc.shift
217
+ else
218
+ return *rc
219
+ end
220
+ end
221
+
222
+ end
223
+
224
+ end # CORBA
225
+ end # R2CORBA
@@ -0,0 +1,247 @@
1
+ #--------------------------------------------------------------------
2
+ # Servant.rb - R2TAO CORBA Servant support
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
+
15
+ module PortableServer
16
+
17
+ module DSI
18
+
19
+ class Servant < PortableServer::Native::DynamicImplementation
20
+ def self.new_instance(rsrv)
21
+ srv = PortableServer::DSI::Servant.new
22
+ srv.__send__(:init, rsrv)
23
+ srv
24
+ end
25
+
26
+ private
27
+ def init(rsrv)
28
+ @rsrv = rsrv
29
+ end
30
+
31
+ public
32
+ def rbServant
33
+ @rsrv
34
+ end
35
+
36
+ def detach_rbServant()
37
+ @rsrv = nil
38
+ end
39
+
40
+ def invoke(jsrvreq)
41
+ begin
42
+ raise CORBA::NO_IMPLEMENT.new('', 0, CORBA::COMPLETED_NO) unless @rsrv
43
+ rsrvreq = CORBA::ServerRequest._wrap_native(jsrvreq, self._orb())
44
+ begin
45
+ case rsrvreq.srvreq_.operation()
46
+ when '_is_a'
47
+ rsrvreq.describe({:arg_list => [['', CORBA::ARG_IN, CORBA._tc_string]], :result_type => CORBA._tc_boolean})
48
+ rc = self._is_a(*rsrvreq.arguments)
49
+ jany = rsrvreq.orb_.create_any()
50
+ jany.insert_boolean(rc == true)
51
+ jsrvreq.set_result(jany)
52
+ when '_non_existent'
53
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_boolean})
54
+ rc = self._non_existent(*rsrvreq.arguments)
55
+ jany = rsrvreq.orb_.create_any()
56
+ jany.insert_boolean(rc == true)
57
+ jsrvreq.set_result(jany)
58
+ when '_repository_id'
59
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_string})
60
+ rc = self._repository_id(*rsrvreq.arguments)
61
+ jany = rsrvreq.orb_.create_any()
62
+ jany.insert_string(rc)
63
+ jsrvreq.set_result(jany)
64
+ when '_component'
65
+ rsrvreq.describe({:arg_list => [], :result_type => CORBA._tc_Object})
66
+ rc = self._get_component(*rsrvreq.arguments)
67
+ jany = rsrvreq.orb_.create_any()
68
+ jany.insert_Object(rc)
69
+ jsrvreq.set_result(jany)
70
+ else
71
+ @rsrv.is_a?(PortableServer::DynamicImplementation) ? self.invoke_DSI(rsrvreq) : self.invoke_SI(rsrvreq)
72
+ end
73
+ rescue NativeException => ex_
74
+ CORBA::Exception.native2r(ex_)
75
+ end
76
+ rescue CORBA::UserException => ex_
77
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
78
+ if rsrvreq.exc_list_.nil? || rsrvreq.exc_list_.any? {|extc| extc.id == ex_.class._tc.id }
79
+ jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb()))
80
+ else
81
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" unless $VERBOSE
82
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
83
+ jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}", 0, CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
84
+ else
85
+ jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}", 0, CORBA::COMPLETED_MAYBE)).to_java(self._orb()))
86
+ end
87
+ end
88
+ rescue CORBA::SystemException => ex_
89
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}" if $VERBOSE
90
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
91
+ jex_klass = CORBA::Native.const_get(ex_.class::Name)
92
+ jsrvreq.setSystemException(jex_klass.new(ex_.reason, ex_.minor, CORBA::Native::CompletionStatus.from_int(ex_.completed)))
93
+ else
94
+ jsrvreq.set_exception(CORBA::Any.to_any(ex_).to_java(self._orb()))
95
+ end
96
+ rescue Exception => ex_
97
+ STDERR.puts "#{ex_}\n#{ex_.backtrace.join("\n")}"
98
+ if jsrvreq.respond_to?(:setSystemException) # JacORB special
99
+ jsrvreq.setSystemException(CORBA::Native::UNKNOWN.new("#{ex_}", 0, CORBA::Native::CompletionStatus.from_int(CORBA::COMPLETED_MAYBE)))
100
+ else
101
+ jsrvreq.set_exception(CORBA::Any.to_any(CORBA::UNKNOWN.new("#{ex_}", 0, CORBA::COMPLETED_MAYBE)).to_java(self._orb()))
102
+ end
103
+ end
104
+ end
105
+
106
+ def _all_interfaces(poa, oid)
107
+ if @rsrv.nil?
108
+ return [].to_java(:string)
109
+ elsif @rsrv.respond_to?(:_ids)
110
+ return @rsrv._ids.to_java(:string)
111
+ elsif @rsrv.class.constants.any? {|c| c.to_sym == :Ids }
112
+ return @rsrv.class::Ids.to_java(:string)
113
+ elsif @rsrv.respond_to?(:_primary_interface)
114
+ return [@rsrv._primary_interface(oid, poa)].to_java(:string)
115
+ else
116
+ return [].to_java(:string)
117
+ end
118
+ end
119
+
120
+ def _is_a(repo_id)
121
+ if @rsrv.nil?
122
+ return false
123
+ elsif @rsrv.respond_to?('_is_a?'.to_sym)
124
+ return @rsrv._is_a?(repo_id)
125
+ else
126
+ begin
127
+ return @rsrv.class::Ids.include?(repo_id)
128
+ rescue
129
+ return super
130
+ end
131
+ end
132
+ end
133
+
134
+ def _repository_id
135
+ if @rsrv.nil?
136
+ return ''
137
+ elsif @rsrv.respond_to?(:_repository_id)
138
+ return @rsrv._repository_id
139
+ else
140
+ return (@rsrv.class.const_get(:Id) rescue '')
141
+ end
142
+ end
143
+
144
+ def _non_existent()
145
+ if @rsrv.nil?
146
+ return true
147
+ elsif @rsrv.respond_to?(:_non_existent)
148
+ return @rsrv._non_existent
149
+ else
150
+ return super
151
+ end
152
+ end
153
+
154
+ def _get_component()
155
+ if @rsrv.nil?
156
+ return nil
157
+ elsif @rsrv.respond_to?(:_get_component)
158
+ obj = @rsrv._get_component
159
+ return obj ? obj.objref_ : nil
160
+ else
161
+ return super
162
+ end
163
+ end
164
+ protected
165
+ def invoke_SI(rsrvreq)
166
+ opsym = rsrvreq.srvreq_.operation().to_sym
167
+ opsig = @rsrv.get_operation_signature(opsym)
168
+ # explicitly define empty (but not nil) exceptionlist if not yet specified
169
+ opsig[:exc_list] = [] if (Hash === opsig) && !opsig.has_key?(:exc_list)
170
+ rsrvreq.describe(opsig)
171
+ alt_opsym = opsig[:op_sym]
172
+ opsym = alt_opsym if alt_opsym && alt_opsym.is_a?(Symbol)
173
+ results = @rsrv.__send__(opsym, *rsrvreq.arguments)
174
+ unless rsrvreq.result_type_.nil?
175
+ result_value = (rsrvreq.arg_out_ > 0 ? results.shift : results) unless rsrvreq.result_type_.kind == CORBA::TK_VOID
176
+ if rsrvreq.arg_out_ > 0
177
+ rsrvreq.nvlist_.count().times do |i|
178
+ jnv = rsrvreq.nvlist_.item(i)
179
+ if [CORBA::ARG_OUT, CORBA::ARG_INOUT].include?(jnv.flags)
180
+ rval = results.shift
181
+ rtc = rsrvreq.arg_list_[i][2]
182
+ CORBA::Any.to_any(rval, rtc).to_java(self._orb(), jnv.value())
183
+ end
184
+ end
185
+ end
186
+ unless rsrvreq.result_type_.kind == CORBA::TK_VOID
187
+ rsrvreq.srvreq_.set_result(CORBA::Any.to_any(result_value, rsrvreq.result_type_).to_java(self._orb()))
188
+ end
189
+ end
190
+ end
191
+
192
+ def invoke_DSI(rsrvreq)
193
+ results = @rsrv.invoke(rsrvreq)
194
+ unless rsrvreq.result_type_.nil?
195
+ result_value = (rsrvreq.arg_out_ > 0 ? results.shift : results) unless rsrvreq.result_type_.kind == CORBA::TK_VOID
196
+ if rsrvreq.arg_out_ > 0
197
+ rsrvreq.nvlist_.count().times do |i|
198
+ jnv = rsrvreq.nvlist_.item(i)
199
+ if [CORBA::ARG_OUT, CORBA::ARG_INOUT].include?(jnv.flags)
200
+ rval = results.shift
201
+ rtc = rsrvreq.arg_list_[i][2]
202
+ CORBA::Any.to_any(rval, rtc).to_java(self._orb(), jnv.value())
203
+ end
204
+ end
205
+ end
206
+ unless rsrvreq.result_type_.kind == CORBA::TK_VOID
207
+ rsrvreq.srvreq_.set_result(CORBA::Any.to_any(result_value, rsrvreq.result_type_).to_java(self._orb()))
208
+ end
209
+ end
210
+ end
211
+ end # Servant
212
+
213
+ end # DSI
214
+
215
+ class Servant
216
+ def srvref_
217
+ @srvref_ ||= PortableServer::DSI::Servant.new_instance(self)
218
+ end
219
+
220
+ def _default_POA()
221
+ begin
222
+ return PortableServer::POA._narrow(CORBA::Object._wrap_native(self.srvref_._default_POA()))
223
+ rescue ::NativeException
224
+ CORBA::Exception.native2r($!)
225
+ end
226
+ end
227
+
228
+ def _this()
229
+ unless @srvref_.nil?
230
+ begin
231
+ return CORBA::Object._wrap_native(self.srvref_._this_object())
232
+ rescue NativeException
233
+ # not in call context or not associated with ORB yet
234
+ end
235
+ end
236
+ raise CORBA::BAD_INV_ORDER.new('no ORB initialized', 0, CORBA::COMPLETED_NO) if CORBA::ORB._orb.nil?
237
+ begin
238
+ return CORBA::Object._wrap_native(self.srvref_._this_object(CORBA::ORB._orb))
239
+ rescue ::NativeException
240
+ CORBA::Exception.native2r($!)
241
+ end
242
+ end
243
+ end # Servant
244
+
245
+ end # PortableServer
246
+
247
+ end # R2CORBA
@@ -0,0 +1,127 @@
1
+ #--------------------------------------------------------------------
2
+ # ServerRequest.rb - R2TAO CORBA ServerRequest support
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
+
15
+ module CORBA
16
+
17
+ module ServerRequest
18
+ @@wrapper_klass = Class.new do
19
+ include CORBA::ServerRequest
20
+ def initialize(jsrvreq, jorb)
21
+ @srvreq_ = jsrvreq
22
+ @orb_ = jorb
23
+ @nvlist_ = nil
24
+ @result_type_ = nil
25
+ @arg_list_ = nil
26
+ @exc_list_ = nil
27
+ @arg_ = nil
28
+ @arg_index_ = nil
29
+ @arg_out_ = 0
30
+ end
31
+ attr_reader :srvreq_
32
+ attr_reader :orb_
33
+ attr_reader :arg_list_
34
+ attr_reader :result_type_
35
+ attr_reader :exc_list_
36
+ attr_reader :nvlist_
37
+ attr_reader :arg_out_
38
+ end
39
+
40
+ def self._wrap_native(jsrvreq, jorb)
41
+ raise ArgumentError, 'Expected org.omg.CORBA.ServerRequest' unless jsrvreq.is_a?(Native::ServerRequest)
42
+ raise ArgumentError, 'Expected org.omg.CORBA.ORB' unless jorb.is_a?(Native::ORB)
43
+ @@wrapper_klass.new(jsrvreq, jorb)
44
+ end
45
+
46
+ def operation
47
+ begin
48
+ self.srvreq_.operation
49
+ rescue ::NativeException
50
+ CORBA::Exception.native2r($!)
51
+ end
52
+ end
53
+
54
+ def describe(opsig)
55
+ raise CORBA::BAD_INV_ORDER.new('', 0, CORBA::COMPLETED_NO) if @nvlist_
56
+ raise CORBA::NO_IMPLEMENT.new('', 0, CORBA::COMPLETED_NO) unless opsig && (Hash === opsig)
57
+ @arg_list_ = opsig[:arg_list]
58
+ @result_type_ = opsig[:result_type]
59
+ @exc_list_ = opsig[:exc_list]
60
+ raise CORBA::BAD_PARAM.new('', 0, CORBA::COMPLETED_NO) unless (@arg_list_.nil? || @arg_list_.is_a?(Array)) &&
61
+ (@result_type_.nil? || @result_type_.is_a?(CORBA::TypeCode)) &&
62
+ (@exc_list_.nil? || @exc_list_.is_a?(Array))
63
+ @nvlist_ = extract_arguments_(@arg_list_)
64
+ self
65
+ end
66
+
67
+ def arguments
68
+ raise CORBA::BAD_INV_ORDER.new('', 0, CORBA::COMPLETED_NO) unless @nvlist_
69
+ unless @arg_
70
+ @arg_ = []
71
+ @nvlist_.count().times do |i|
72
+ jnv = @nvlist_.item(i)
73
+ @arg_ << CORBA::Any.from_java(jnv.value, self.orb_, @arg_list_[i][2]) if [CORBA::ARG_IN, CORBA::ARG_INOUT].include?(jnv.flags)
74
+ @arg_out_ += 1 if [CORBA::ARG_OUT, CORBA::ARG_INOUT].include?(jnv.flags)
75
+ end
76
+ end
77
+ @arg_
78
+ end
79
+
80
+ def [](key)
81
+ self.arguments # make sure the @arg_ member has been initialized
82
+ key = arg_index_from_name(key) if String === key
83
+ key = key.to_i if key
84
+ raise CORBA::BAD_PARAM.new('', 0, CORBA::COMPLETD_NO) unless key && (key >= 0) && (key < @arg_.size)
85
+ @arg_[key]
86
+ end
87
+
88
+ def []=(key, val)
89
+ self.arguments # make sure the @arg_ member has been initialized
90
+ key = arg_index_from_name(key) if String === key
91
+ key = key.to_i if key
92
+ raise CORBA::BAD_PARAM.new('', 0, CORBA::COMPLETD_NO) unless key && (key >= 0) && (key < @arg_.size)
93
+ jnv = @nvlist_.item(key)
94
+ rtc = @arg_list_[key][2]
95
+ CORBA::Any.to_any(val, rtc).to_java(self.orb_, jnv.value())
96
+ @arg_[key] = val
97
+ end
98
+
99
+ protected
100
+ def arg_index_from_name(arg_name)
101
+ unless @arg_index_
102
+ @arg_index_ = {}
103
+ @nvlist_.count().times do |i|
104
+ jnv = @nvlist_.item(i)
105
+ @arg_index_[jnv.name] = i
106
+ end
107
+ end
108
+ @arg_index_[arg_name]
109
+ end
110
+
111
+ def extract_arguments_(arg_list)
112
+ jnvlist = self.orb_.create_list(0)
113
+ unless arg_list.nil?
114
+ arg_list.each do |argnm, argf, argtc|
115
+ raise CORBA::BAD_PARAM.new('', 0, CORBA::COMPLETED_NO) if argf.nil? || argtc.nil? || !argtc.is_a?(CORBA::TypeCode)
116
+ jnvlist.add_value(argnm.to_s, Any.to_any(nil, argtc).to_java(@orb_), argf.to_i)
117
+ end
118
+ self.srvreq_.arguments(jnvlist)
119
+ end
120
+ jnvlist
121
+ end
122
+
123
+ end # ServerRequest
124
+
125
+ end # CORBA
126
+
127
+ end # R2CORBA