r2corba 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) 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/ridlc +11 -0
  8. data/bin/rins +7 -0
  9. data/ext/ext.mwc +6 -0
  10. data/ext/extload/extload.c +60 -0
  11. data/ext/libr2tao/any.cpp +1543 -0
  12. data/ext/libr2tao/exception.cpp +202 -0
  13. data/ext/libr2tao/exception.h +104 -0
  14. data/ext/libr2tao/longdouble.cpp +173 -0
  15. data/ext/libr2tao/longdouble.h +31 -0
  16. data/ext/libr2tao/object.cpp +1150 -0
  17. data/ext/libr2tao/object.h +38 -0
  18. data/ext/libr2tao/orb.cpp +1029 -0
  19. data/ext/libr2tao/orb.h +36 -0
  20. data/ext/libr2tao/r2tao_export.h +45 -0
  21. data/ext/libr2tao/r2tao_ext.h +38 -0
  22. data/ext/libr2tao/required.cpp +463 -0
  23. data/ext/libr2tao/required.h +187 -0
  24. data/ext/libr2tao/typecode.cpp +888 -0
  25. data/ext/libr2tao/typecode.h +45 -0
  26. data/ext/libr2tao/values.cpp +2938 -0
  27. data/ext/libr2tao/values.h +396 -0
  28. data/ext/librpoa/iortable.cpp +250 -0
  29. data/ext/librpoa/poa.cpp +1076 -0
  30. data/ext/librpoa/poa.h +24 -0
  31. data/ext/librpoa/rpoa_export.h +44 -0
  32. data/ext/librpoa/servant.cpp +1338 -0
  33. data/ext/librpoa/servant.h +116 -0
  34. data/ext/librpoa/srvreq_fix.cpp +283 -0
  35. data/ext/librpoa/srvreq_fix.h +149 -0
  36. data/ext/librpol/policies.cpp +763 -0
  37. data/ext/librpol/policies.h +15 -0
  38. data/ext/librpol/rpol_export.h +44 -0
  39. data/lib/corba/cbase/IORMap.rb +33 -0
  40. data/lib/corba/cbase/ORB.rb +231 -0
  41. data/lib/corba/cbase/Request.rb +134 -0
  42. data/lib/corba/cbase/Streams.rb +129 -0
  43. data/lib/corba/cbase/Stub.rb +19 -0
  44. data/lib/corba/cbase/Typecode.rb +441 -0
  45. data/lib/corba/cbase/Values.rb +129 -0
  46. data/lib/corba/cbase/exception.rb +66 -0
  47. data/lib/corba/cbase/poa.rb +23 -0
  48. data/lib/corba/cbase/policies.rb +78 -0
  49. data/lib/corba/cbase/post_require.rb +14 -0
  50. data/lib/corba/cbase/require.rb +28 -0
  51. data/lib/corba/cmds/base.rb +85 -0
  52. data/lib/corba/cmds/test.rb +30 -0
  53. data/lib/corba/common/Any.rb +91 -0
  54. data/lib/corba/common/IDL.rb +104 -0
  55. data/lib/corba/common/ORB.rb +368 -0
  56. data/lib/corba/common/Object.rb +208 -0
  57. data/lib/corba/common/Request.rb +20 -0
  58. data/lib/corba/common/Servant.rb +108 -0
  59. data/lib/corba/common/Struct.rb +22 -0
  60. data/lib/corba/common/Stub.rb +79 -0
  61. data/lib/corba/common/Typecode.rb +1121 -0
  62. data/lib/corba/common/Union.rb +56 -0
  63. data/lib/corba/common/Values.rb +92 -0
  64. data/lib/corba/common/const.rb +22 -0
  65. data/lib/corba/common/exception.rb +68 -0
  66. data/lib/corba/common/require.rb +27 -0
  67. data/lib/corba/common/version.rb +22 -0
  68. data/lib/corba/idl/IDL.rb +21 -0
  69. data/lib/corba/idl/IORTable.pidl +62 -0
  70. data/lib/corba/idl/TAO_Ext.pidl +46 -0
  71. data/lib/corba/idl/require.rb +20 -0
  72. data/lib/corba/jbase/Any.rb +273 -0
  73. data/lib/corba/jbase/IORMap.rb +36 -0
  74. data/lib/corba/jbase/ORB.rb +99 -0
  75. data/lib/corba/jbase/Object.rb +98 -0
  76. data/lib/corba/jbase/Request.rb +226 -0
  77. data/lib/corba/jbase/Servant.rb +247 -0
  78. data/lib/corba/jbase/ServerRequest.rb +128 -0
  79. data/lib/corba/jbase/Streams.rb +671 -0
  80. data/lib/corba/jbase/Stub.rb +38 -0
  81. data/lib/corba/jbase/Typecode.rb +520 -0
  82. data/lib/corba/jbase/Values.rb +173 -0
  83. data/lib/corba/jbase/exception.rb +106 -0
  84. data/lib/corba/jbase/poa.rb +229 -0
  85. data/lib/corba/jbase/policies.rb +300 -0
  86. data/lib/corba/jbase/post_require.rb +14 -0
  87. data/lib/corba/jbase/require.rb +86 -0
  88. data/lib/corba/naming.rb +14 -0
  89. data/lib/corba/naming_service.rb +15 -0
  90. data/lib/corba/poa.rb +15 -0
  91. data/lib/corba/policies.rb +18 -0
  92. data/lib/corba/require.rb +17 -0
  93. data/lib/corba/svcs/ins/cos_naming.rb +426 -0
  94. data/lib/corba/svcs/ins/ins.rb +526 -0
  95. data/lib/corba/svcs/ins/naming_service.rb +119 -0
  96. data/lib/corba.rb +16 -0
  97. data/lib/ridlbe/ruby/config.rb +336 -0
  98. data/lib/ridlbe/ruby/require.rb +16 -0
  99. data/lib/ridlbe/ruby/walker.rb +1582 -0
  100. data/mkrf_conf_srcgem.rb +186 -0
  101. data/rakelib/bin.rake +80 -0
  102. data/rakelib/bin.rb +146 -0
  103. data/rakelib/build.rake +87 -0
  104. data/rakelib/config.rake +52 -0
  105. data/rakelib/config.rb +450 -0
  106. data/rakelib/ext.rake +242 -0
  107. data/rakelib/ext.rb +308 -0
  108. data/rakelib/ext_r2tao.rb +232 -0
  109. data/rakelib/gem.rake +212 -0
  110. data/rakelib/gem.rb +146 -0
  111. data/rakelib/package.rake +26 -0
  112. data/rakelib/test.rake +23 -0
  113. data/test/BiDirectional/Test.idl +34 -0
  114. data/test/BiDirectional/client.rb +132 -0
  115. data/test/BiDirectional/run_test.rb +68 -0
  116. data/test/BiDirectional/server.rb +169 -0
  117. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
  118. data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
  119. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
  120. data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
  121. data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
  122. data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
  123. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
  124. data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
  125. data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
  126. data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
  127. data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
  128. data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
  129. data/test/Collocation/Diamond.idl +39 -0
  130. data/test/Collocation/run_test.rb +52 -0
  131. data/test/Collocation/test.rb +195 -0
  132. data/test/Connect_Timeout/Test.idl +27 -0
  133. data/test/Connect_Timeout/client.rb +111 -0
  134. data/test/Connect_Timeout/run_test.rb +52 -0
  135. data/test/DII/Test.idl +27 -0
  136. data/test/DII/client.rb +115 -0
  137. data/test/DII/run_test.rb +69 -0
  138. data/test/DII/server.rb +95 -0
  139. data/test/DSI/Test.idl +27 -0
  140. data/test/DSI/client.rb +66 -0
  141. data/test/DSI/run_test.rb +69 -0
  142. data/test/DSI/server.rb +106 -0
  143. data/test/Exceptions/Test.idl +48 -0
  144. data/test/Exceptions/client.rb +118 -0
  145. data/test/Exceptions/run_test.rb +69 -0
  146. data/test/Exceptions/server.rb +131 -0
  147. data/test/Hello/Test.idl +27 -0
  148. data/test/Hello/client.rb +78 -0
  149. data/test/Hello/run_test.rb +71 -0
  150. data/test/Hello/server.rb +95 -0
  151. data/test/IDL_Test/Test.idl +113 -0
  152. data/test/IDL_Test/Test_inc.idl +17 -0
  153. data/test/IDL_Test/client.rb +102 -0
  154. data/test/IDL_Test/run_test.rb +69 -0
  155. data/test/IDL_Test/server.rb +99 -0
  156. data/test/IORMap/Test.idl +27 -0
  157. data/test/IORMap/client.rb +73 -0
  158. data/test/IORMap/run_test.rb +69 -0
  159. data/test/IORMap/server.rb +114 -0
  160. data/test/IORTable/Test.idl +27 -0
  161. data/test/IORTable/client.rb +75 -0
  162. data/test/IORTable/run_test.rb +69 -0
  163. data/test/IORTable/server.rb +130 -0
  164. data/test/Implicit_Conversion/Test.idl +31 -0
  165. data/test/Implicit_Conversion/client.rb +110 -0
  166. data/test/Implicit_Conversion/run_test.rb +69 -0
  167. data/test/Implicit_Conversion/server.rb +99 -0
  168. data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
  169. data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
  170. data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
  171. data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
  172. data/test/Multi_Threading/Simple/Test.idl +27 -0
  173. data/test/Multi_Threading/Simple/client.rb +88 -0
  174. data/test/Multi_Threading/Simple/run_test.rb +69 -0
  175. data/test/Multi_Threading/Simple/server.rb +118 -0
  176. data/test/Multi_Threading/Threads/Test.idl +31 -0
  177. data/test/Multi_Threading/Threads/client.rb +80 -0
  178. data/test/Multi_Threading/Threads/run_test.rb +76 -0
  179. data/test/Multi_Threading/Threads/server.rb +119 -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.rb +102 -0
  185. data/test/Nil/Test.idl +27 -0
  186. data/test/Nil/run_test.rb +52 -0
  187. data/test/Nil/test.rb +78 -0
  188. data/test/OBV/AbstractInterface/client.rb +179 -0
  189. data/test/OBV/AbstractInterface/run_test.rb +69 -0
  190. data/test/OBV/AbstractInterface/server.rb +149 -0
  191. data/test/OBV/AbstractInterface/test.idl +53 -0
  192. data/test/OBV/Custom/OBV.idl +18 -0
  193. data/test/OBV/Custom/OBV_impl.rb +40 -0
  194. data/test/OBV/Custom/client.rb +86 -0
  195. data/test/OBV/Custom/run_test.rb +69 -0
  196. data/test/OBV/Custom/server.rb +100 -0
  197. data/test/OBV/Simple/OBV.idl +15 -0
  198. data/test/OBV/Simple/OBV_impl.rb +26 -0
  199. data/test/OBV/Simple/client.rb +86 -0
  200. data/test/OBV/Simple/run_test.rb +69 -0
  201. data/test/OBV/Simple/server.rb +100 -0
  202. data/test/OBV/Simple_Event/Event.idl +15 -0
  203. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  204. data/test/OBV/Simple_Event/client.rb +86 -0
  205. data/test/OBV/Simple_Event/run_test.rb +69 -0
  206. data/test/OBV/Simple_Event/server.rb +100 -0
  207. data/test/OBV/Supports/client.rb +116 -0
  208. data/test/OBV/Supports/run_test.rb +69 -0
  209. data/test/OBV/Supports/server.rb +103 -0
  210. data/test/OBV/Supports/supports.idl +33 -0
  211. data/test/OBV/Supports/supports_impl.rb +57 -0
  212. data/test/OBV/Tree/client.rb +116 -0
  213. data/test/OBV/Tree/run_test.rb +69 -0
  214. data/test/OBV/Tree/server.rb +117 -0
  215. data/test/OBV/Tree/test.idl +32 -0
  216. data/test/OBV/Truncatable/Extra.idl +27 -0
  217. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  218. data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
  219. data/test/OBV/Truncatable/client.rb +279 -0
  220. data/test/OBV/Truncatable/run_test.rb +69 -0
  221. data/test/OBV/Truncatable/server.rb +89 -0
  222. data/test/OBV/ValueBox/client.rb +497 -0
  223. data/test/OBV/ValueBox/run_test.rb +69 -0
  224. data/test/OBV/ValueBox/server.rb +271 -0
  225. data/test/OBV/ValueBox/valuebox.idl +101 -0
  226. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  227. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  228. data/test/OBV/ValueBox/vb_union.idl +21 -0
  229. data/test/Object/Test.idl +27 -0
  230. data/test/Object/client.rb +103 -0
  231. data/test/Object/run_test.rb +69 -0
  232. data/test/Object/server.rb +126 -0
  233. data/test/POA/Test.idl +27 -0
  234. data/test/POA/run_test.rb +52 -0
  235. data/test/POA/test.rb +112 -0
  236. data/test/Param_Test/Test.idl +182 -0
  237. data/test/Param_Test/client.rb +277 -0
  238. data/test/Param_Test/run_test.rb +69 -0
  239. data/test/Param_Test/server.rb +296 -0
  240. data/test/Performance/Simple/Test.idl +27 -0
  241. data/test/Performance/Simple/client.rb +90 -0
  242. data/test/Performance/Simple/run_test.rb +69 -0
  243. data/test/Performance/Simple/server.rb +95 -0
  244. data/test/Policies/Test.idl +27 -0
  245. data/test/Policies/run_test.rb +52 -0
  246. data/test/Policies/test.rb +144 -0
  247. data/test/Timeout/client.rb +207 -0
  248. data/test/Timeout/run_test.rb +69 -0
  249. data/test/Timeout/server.rb +109 -0
  250. data/test/Timeout/test.idl +19 -0
  251. data/test/lib/assert.rb +43 -0
  252. data/test/lib/test.rb +542 -0
  253. data/test/test_runner.rb +193 -0
  254. metadata +334 -0
@@ -0,0 +1,15 @@
1
+ /*--------------------------------------------------------------------
2
+ # policies.h - R2TAO CORBA Policies support
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # Copyright (c) Remedy IT Expertise BV
7
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
8
+ #------------------------------------------------------------------*/
9
+ #ifndef __R2TAO_POLICIES_H
10
+ #define __R2TAO_POLICIES_H
11
+
12
+ #include "required.h"
13
+
14
+ #endif
15
+
@@ -0,0 +1,44 @@
1
+ // -*- C++ -*-
2
+ /*--------------------------------------------------------------------
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
+ #ifndef R2TAO_POL_EXPORT_H
14
+ #define R2TAO_POL_EXPORT_H
15
+
16
+ #include "ace/config-all.h"
17
+
18
+ #if defined (ACE_AS_STATIC_LIBS) && !defined (R2TAO_POL_HAS_DLL)
19
+ # define R2TAO_POL_HAS_DLL 0
20
+ #endif /* ACE_AS_STATIC_LIBS && R2TAO_POL_HAS_DLL */
21
+
22
+ #if !defined (R2TAO_POL_HAS_DLL)
23
+ # define R2TAO_POL_HAS_DLL 1
24
+ #endif /* ! R2TAO_POL_HAS_DLL */
25
+
26
+ #if defined (R2TAO_POL_HAS_DLL) && (R2TAO_POL_HAS_DLL == 1)
27
+ # if defined (R2TAO_POL_BUILD_DLL)
28
+ # define R2TAO_POL_EXPORT ACE_Proper_Export_Flag
29
+ # define R2TAO_POL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
30
+ # define R2TAO_POL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
31
+ # else /* R2TAO_POL_BUILD_DLL */
32
+ # define R2TAO_POL_EXPORT ACE_Proper_Import_Flag
33
+ # define R2TAO_POL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
34
+ # define R2TAO_POL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
35
+ # endif /* R2TAO_POL_BUILD_DLL */
36
+ #else /* R2TAO_POL_HAS_DLL == 1 */
37
+ # define R2TAO_POL_EXPORT
38
+ # define R2TAO_POL_SINGLETON_DECLARATION(T)
39
+ # define R2TAO_POL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
40
+ #endif /* R2TAO_POL_HAS_DLL == 1 */
41
+
42
+ #endif /* R2TAO_POL_EXPORT_H */
43
+
44
+ // End of auto generated file.
@@ -0,0 +1,33 @@
1
+ #--------------------------------------------------------------------
2
+ # iormap.rb - C++/TAO IORMap 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 'corba/idl/IORTableC'
14
+
15
+ module R2CORBA
16
+ class IORMap
17
+ def initialize(orb)
18
+ obj = orb.resolve_initial_references('IORTable')
19
+ @iortbl = IORTable::Table._narrow(obj)
20
+ end
21
+
22
+ def map_ior(object_key, ior)
23
+ @iortbl.rebind(object_key, ior)
24
+ end
25
+
26
+ def unmap_ior(object_key)
27
+ begin
28
+ @iortbl.unbind(object_key)
29
+ rescue IORTable::NotFound
30
+ end
31
+ end
32
+ end
33
+ end
@@ -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