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.
- checksums.yaml +7 -0
- data/CHANGES +159 -0
- data/LICENSE +59 -0
- data/README +62 -0
- data/THANKS +52 -0
- data/bin/r2corba +8 -0
- data/bin/r2corba.bat +20 -0
- data/bin/ridlc +11 -0
- data/bin/ridlc.bat +23 -0
- data/bin/rins +7 -0
- data/bin/rins.bat +19 -0
- data/ext/.keep +0 -0
- data/lib/corba/cbase/IORMap.rb +33 -0
- data/lib/corba/cbase/ORB.rb +231 -0
- data/lib/corba/cbase/Request.rb +134 -0
- data/lib/corba/cbase/Streams.rb +129 -0
- data/lib/corba/cbase/Stub.rb +19 -0
- data/lib/corba/cbase/Typecode.rb +441 -0
- data/lib/corba/cbase/Values.rb +129 -0
- data/lib/corba/cbase/exception.rb +66 -0
- data/lib/corba/cbase/poa.rb +23 -0
- data/lib/corba/cbase/policies.rb +78 -0
- data/lib/corba/cbase/post_require.rb +14 -0
- data/lib/corba/cbase/require.rb +28 -0
- data/lib/corba/cmds/base.rb +85 -0
- data/lib/corba/cmds/test.rb +30 -0
- data/lib/corba/common/Any.rb +91 -0
- data/lib/corba/common/IDL.rb +104 -0
- data/lib/corba/common/ORB.rb +368 -0
- data/lib/corba/common/Object.rb +208 -0
- data/lib/corba/common/Request.rb +20 -0
- data/lib/corba/common/Servant.rb +108 -0
- data/lib/corba/common/Struct.rb +22 -0
- data/lib/corba/common/Stub.rb +79 -0
- data/lib/corba/common/Typecode.rb +1121 -0
- data/lib/corba/common/Union.rb +56 -0
- data/lib/corba/common/Values.rb +92 -0
- data/lib/corba/common/const.rb +22 -0
- data/lib/corba/common/exception.rb +68 -0
- data/lib/corba/common/require.rb +27 -0
- data/lib/corba/common/version.rb +22 -0
- data/lib/corba/idl/BiDirPolicyC.rb +63 -0
- data/lib/corba/idl/CosNamingC.rb +461 -0
- data/lib/corba/idl/CosNamingS.rb +309 -0
- data/lib/corba/idl/IDL.rb +21 -0
- data/lib/corba/idl/IORTable.pidl +62 -0
- data/lib/corba/idl/IORTableC.rb +117 -0
- data/lib/corba/idl/MessagingC.rb +904 -0
- data/lib/corba/idl/POAC.rb +930 -0
- data/lib/corba/idl/TAO_Ext.pidl +46 -0
- data/lib/corba/idl/TAO_ExtC.rb +179 -0
- data/lib/corba/idl/r2c_orb.rb +572 -0
- data/lib/corba/idl/require.rb +20 -0
- data/lib/corba/jbase/Any.rb +273 -0
- data/lib/corba/jbase/IORMap.rb +36 -0
- data/lib/corba/jbase/ORB.rb +99 -0
- data/lib/corba/jbase/Object.rb +98 -0
- data/lib/corba/jbase/Request.rb +226 -0
- data/lib/corba/jbase/Servant.rb +247 -0
- data/lib/corba/jbase/ServerRequest.rb +128 -0
- data/lib/corba/jbase/Streams.rb +671 -0
- data/lib/corba/jbase/Stub.rb +38 -0
- data/lib/corba/jbase/Typecode.rb +520 -0
- data/lib/corba/jbase/Values.rb +173 -0
- data/lib/corba/jbase/exception.rb +106 -0
- data/lib/corba/jbase/poa.rb +229 -0
- data/lib/corba/jbase/policies.rb +300 -0
- data/lib/corba/jbase/post_require.rb +14 -0
- data/lib/corba/jbase/require.rb +86 -0
- data/lib/corba/naming.rb +14 -0
- data/lib/corba/naming_service.rb +15 -0
- data/lib/corba/poa.rb +15 -0
- data/lib/corba/policies.rb +18 -0
- data/lib/corba/require.rb +17 -0
- data/lib/corba/svcs/ins/cos_naming.rb +426 -0
- data/lib/corba/svcs/ins/ins.rb +526 -0
- data/lib/corba/svcs/ins/naming_service.rb +119 -0
- data/lib/corba.rb +16 -0
- data/lib/ridlbe/ruby/config.rb +336 -0
- data/lib/ridlbe/ruby/orb.pidlc +0 -0
- data/lib/ridlbe/ruby/require.rb +16 -0
- data/lib/ridlbe/ruby/walker.rb +1582 -0
- data/mkrf_conf_bingem.rb +101 -0
- data/rakelib/bin.rake +80 -0
- data/rakelib/bin.rb +146 -0
- data/rakelib/build.rake +87 -0
- data/rakelib/config.rake +52 -0
- data/rakelib/config.rb +450 -0
- data/rakelib/ext.rake +242 -0
- data/rakelib/ext.rb +308 -0
- data/rakelib/ext_r2tao.rb +232 -0
- data/rakelib/gem.rake +212 -0
- data/rakelib/gem.rb +146 -0
- data/rakelib/package.rake +26 -0
- data/rakelib/test.rake +23 -0
- data/test/BiDirectional/Test.idl +34 -0
- data/test/BiDirectional/client.rb +132 -0
- data/test/BiDirectional/run_test.rb +68 -0
- data/test/BiDirectional/server.ior +1 -0
- data/test/BiDirectional/server.rb +169 -0
- data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
- data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
- data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -0
- data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
- data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
- data/test/CORBA_Services/Naming/Corbaname/corbaname.ior +1 -0
- data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -0
- data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
- data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
- data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
- data/test/CORBA_Services/Naming/Simple/ins.ior +1 -0
- data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
- data/test/Collocation/Diamond.idl +39 -0
- data/test/Collocation/run_test.rb +52 -0
- data/test/Collocation/test.rb +195 -0
- data/test/Connect_Timeout/Test.idl +27 -0
- data/test/Connect_Timeout/client.rb +111 -0
- data/test/Connect_Timeout/run_test.rb +52 -0
- data/test/DII/Test.idl +27 -0
- data/test/DII/client.rb +115 -0
- data/test/DII/run_test.rb +69 -0
- data/test/DII/server.ior +1 -0
- data/test/DII/server.rb +95 -0
- data/test/DSI/Test.idl +27 -0
- data/test/DSI/client.rb +66 -0
- data/test/DSI/run_test.rb +69 -0
- data/test/DSI/server.ior +1 -0
- data/test/DSI/server.rb +106 -0
- data/test/Exceptions/Test.idl +48 -0
- data/test/Exceptions/client.rb +118 -0
- data/test/Exceptions/run_test.rb +69 -0
- data/test/Exceptions/server.ior +1 -0
- data/test/Exceptions/server.rb +131 -0
- data/test/Hello/Test.idl +27 -0
- data/test/Hello/client.rb +78 -0
- data/test/Hello/run_test.rb +71 -0
- data/test/Hello/server.rb +95 -0
- data/test/IDL_Test/Test.idl +113 -0
- data/test/IDL_Test/Test_inc.idl +17 -0
- data/test/IDL_Test/client.rb +102 -0
- data/test/IDL_Test/run_test.rb +69 -0
- data/test/IDL_Test/server.ior +1 -0
- data/test/IDL_Test/server.rb +99 -0
- data/test/IORMap/Test.idl +27 -0
- data/test/IORMap/client.rb +73 -0
- data/test/IORMap/run_test.rb +69 -0
- data/test/IORMap/server.ior +1 -0
- data/test/IORMap/server.rb +114 -0
- data/test/IORTable/Test.idl +27 -0
- data/test/IORTable/client.rb +75 -0
- data/test/IORTable/run_test.rb +69 -0
- data/test/IORTable/server.ior +1 -0
- data/test/IORTable/server.rb +130 -0
- data/test/Implicit_Conversion/Test.idl +31 -0
- data/test/Implicit_Conversion/client.rb +110 -0
- data/test/Implicit_Conversion/run_test.rb +69 -0
- data/test/Implicit_Conversion/server.ior +1 -0
- data/test/Implicit_Conversion/server.rb +99 -0
- data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
- data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
- data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
- data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
- data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -0
- data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -0
- data/test/Multi_Threading/Simple/Test.idl +27 -0
- data/test/Multi_Threading/Simple/client.rb +88 -0
- data/test/Multi_Threading/Simple/run_test.rb +69 -0
- data/test/Multi_Threading/Simple/server.ior +1 -0
- data/test/Multi_Threading/Simple/server.rb +118 -0
- data/test/Multi_Threading/Threads/Test.idl +31 -0
- data/test/Multi_Threading/Threads/client.rb +80 -0
- data/test/Multi_Threading/Threads/run_test.rb +76 -0
- data/test/Multi_Threading/Threads/server.ior +1 -0
- data/test/Multi_Threading/Threads/server.rb +119 -0
- data/test/Multi_Threading/Threads/watchdog.ior +1 -0
- data/test/Multi_Threading/Threads/watchdog.rb +87 -0
- data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
- data/test/Multiple_Servant_Interfaces/client.rb +70 -0
- data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
- data/test/Multiple_Servant_Interfaces/server.ior +1 -0
- data/test/Multiple_Servant_Interfaces/server.rb +102 -0
- data/test/Nil/Test.idl +27 -0
- data/test/Nil/run_test.rb +52 -0
- data/test/Nil/test.rb +78 -0
- data/test/OBV/AbstractInterface/client.rb +179 -0
- data/test/OBV/AbstractInterface/run_test.rb +69 -0
- data/test/OBV/AbstractInterface/server.ior +1 -0
- data/test/OBV/AbstractInterface/server.rb +149 -0
- data/test/OBV/AbstractInterface/test.idl +53 -0
- data/test/OBV/Custom/OBV.idl +18 -0
- data/test/OBV/Custom/OBV_impl.rb +40 -0
- data/test/OBV/Custom/client.rb +86 -0
- data/test/OBV/Custom/run_test.rb +69 -0
- data/test/OBV/Custom/server.ior +1 -0
- data/test/OBV/Custom/server.rb +100 -0
- data/test/OBV/Simple/OBV.idl +15 -0
- data/test/OBV/Simple/OBV_impl.rb +26 -0
- data/test/OBV/Simple/client.rb +86 -0
- data/test/OBV/Simple/run_test.rb +69 -0
- data/test/OBV/Simple/server.ior +1 -0
- data/test/OBV/Simple/server.rb +100 -0
- data/test/OBV/Simple_Event/Event.idl +15 -0
- data/test/OBV/Simple_Event/Event_impl.rb +26 -0
- data/test/OBV/Simple_Event/client.rb +86 -0
- data/test/OBV/Simple_Event/run_test.rb +69 -0
- data/test/OBV/Simple_Event/server.ior +1 -0
- data/test/OBV/Simple_Event/server.rb +100 -0
- data/test/OBV/Supports/client.rb +116 -0
- data/test/OBV/Supports/run_test.rb +69 -0
- data/test/OBV/Supports/server.ior +1 -0
- data/test/OBV/Supports/server.rb +103 -0
- data/test/OBV/Supports/supports.idl +33 -0
- data/test/OBV/Supports/supports_impl.rb +57 -0
- data/test/OBV/Tree/client.rb +116 -0
- data/test/OBV/Tree/run_test.rb +69 -0
- data/test/OBV/Tree/server.ior +1 -0
- data/test/OBV/Tree/server.rb +117 -0
- data/test/OBV/Tree/test.idl +32 -0
- data/test/OBV/Truncatable/Extra.idl +27 -0
- data/test/OBV/Truncatable/Truncatable.idl +105 -0
- data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
- data/test/OBV/Truncatable/client.rb +279 -0
- data/test/OBV/Truncatable/run_test.rb +69 -0
- data/test/OBV/Truncatable/server.ior +1 -0
- data/test/OBV/Truncatable/server.rb +89 -0
- data/test/OBV/ValueBox/client.rb +497 -0
- data/test/OBV/ValueBox/run_test.rb +69 -0
- data/test/OBV/ValueBox/server.ior +1 -0
- data/test/OBV/ValueBox/server.rb +271 -0
- data/test/OBV/ValueBox/valuebox.idl +101 -0
- data/test/OBV/ValueBox/vb_basic.idl +75 -0
- data/test/OBV/ValueBox/vb_struct.idl +68 -0
- data/test/OBV/ValueBox/vb_union.idl +21 -0
- data/test/Object/Test.idl +27 -0
- data/test/Object/client.rb +103 -0
- data/test/Object/run_test.rb +69 -0
- data/test/Object/server.ior +1 -0
- data/test/Object/server.rb +126 -0
- data/test/POA/Test.idl +27 -0
- data/test/POA/run_test.rb +52 -0
- data/test/POA/test.rb +112 -0
- data/test/Param_Test/Test.idl +182 -0
- data/test/Param_Test/client.rb +277 -0
- data/test/Param_Test/run_test.rb +69 -0
- data/test/Param_Test/server.ior +1 -0
- data/test/Param_Test/server.rb +296 -0
- data/test/Performance/Simple/Test.idl +27 -0
- data/test/Performance/Simple/client.rb +90 -0
- data/test/Performance/Simple/run_test.rb +69 -0
- data/test/Performance/Simple/server.ior +1 -0
- data/test/Performance/Simple/server.rb +95 -0
- data/test/Policies/Test.idl +27 -0
- data/test/Policies/run_test.rb +52 -0
- data/test/Policies/test.rb +144 -0
- data/test/Timeout/client.rb +207 -0
- data/test/Timeout/run_test.rb +69 -0
- data/test/Timeout/server.ior +1 -0
- data/test/Timeout/server.rb +109 -0
- data/test/Timeout/test.idl +19 -0
- data/test/lib/assert.rb +43 -0
- data/test/lib/test.rb +542 -0
- data/test/test_runner.rb +193 -0
- 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
|