r2corba 1.4.1-x86-mingw32 → 1.5.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 -7
- data/CHANGES +173 -159
- data/LICENSE +59 -59
- data/README +62 -62
- data/THANKS +54 -52
- data/bin/r2corba +1 -1
- data/bin/ridlc +1 -1
- data/bin/rins +1 -1
- data/lib/corba.rb +16 -16
- data/lib/corba/cbase/IORMap.rb +33 -33
- data/lib/corba/cbase/ORB.rb +237 -231
- data/lib/corba/cbase/Request.rb +133 -133
- data/lib/corba/cbase/Streams.rb +129 -129
- data/lib/corba/cbase/Stub.rb +19 -19
- data/lib/corba/cbase/Typecode.rb +441 -441
- data/lib/corba/cbase/Values.rb +129 -129
- data/lib/corba/cbase/exception.rb +66 -66
- data/lib/corba/cbase/poa.rb +23 -23
- data/lib/corba/cbase/policies.rb +77 -77
- data/lib/corba/cbase/post_require.rb +13 -13
- data/lib/corba/cbase/require.rb +28 -28
- data/lib/corba/cmds/base.rb +85 -85
- data/lib/corba/cmds/test.rb +30 -30
- data/lib/corba/common/Any.rb +91 -91
- data/lib/corba/common/IDL.rb +104 -104
- data/lib/corba/common/ORB.rb +368 -368
- data/lib/corba/common/Object.rb +208 -208
- data/lib/corba/common/Request.rb +19 -19
- data/lib/corba/common/Servant.rb +108 -108
- data/lib/corba/common/Struct.rb +21 -21
- data/lib/corba/common/Stub.rb +79 -79
- data/lib/corba/common/Typecode.rb +1121 -1121
- data/lib/corba/common/Union.rb +55 -55
- data/lib/corba/common/Values.rb +91 -91
- data/lib/corba/common/const.rb +22 -22
- data/lib/corba/common/exception.rb +68 -68
- data/lib/corba/common/require.rb +27 -27
- data/lib/corba/common/version.rb +22 -22
- data/lib/corba/idl/IDL.rb +21 -21
- data/lib/corba/idl/IORTable.pidl +62 -62
- data/lib/corba/idl/TAO_Ext.pidl +46 -46
- data/lib/corba/idl/require.rb +20 -20
- data/lib/corba/jbase/Any.rb +273 -273
- data/lib/corba/jbase/IORMap.rb +35 -35
- data/lib/corba/jbase/ORB.rb +112 -99
- data/lib/corba/jbase/Object.rb +99 -98
- data/lib/corba/jbase/Request.rb +225 -225
- data/lib/corba/jbase/Servant.rb +247 -246
- data/lib/corba/jbase/ServerRequest.rb +127 -127
- data/lib/corba/jbase/Streams.rb +670 -670
- data/lib/corba/jbase/Stub.rb +38 -38
- data/lib/corba/jbase/Typecode.rb +520 -520
- data/lib/corba/jbase/Values.rb +173 -173
- data/lib/corba/jbase/exception.rb +106 -106
- data/lib/corba/jbase/poa.rb +228 -228
- data/lib/corba/jbase/policies.rb +299 -299
- data/lib/corba/jbase/post_require.rb +14 -14
- data/lib/corba/jbase/require.rb +89 -86
- data/lib/corba/naming.rb +14 -14
- data/lib/corba/naming_service.rb +15 -15
- data/lib/corba/poa.rb +15 -15
- data/lib/corba/policies.rb +18 -18
- data/lib/corba/require.rb +17 -17
- data/lib/corba/svcs/ins/cos_naming.rb +426 -426
- data/lib/corba/svcs/ins/ins.rb +526 -526
- data/lib/corba/svcs/ins/naming_service.rb +119 -119
- data/lib/ridlbe/ruby/config.rb +336 -336
- data/lib/ridlbe/ruby/orb.pidlc +0 -0
- data/lib/ridlbe/ruby/require.rb +16 -16
- data/lib/ridlbe/ruby/walker.rb +1582 -1582
- data/mkrf_conf_bingem.rb +151 -101
- data/rakelib/bin.rake +80 -80
- data/rakelib/bin.rb +145 -145
- data/rakelib/build.rake +87 -87
- data/rakelib/config.rake +51 -51
- data/rakelib/config.rb +543 -449
- data/rakelib/ext.rake +242 -242
- data/rakelib/ext.rb +316 -308
- data/rakelib/ext_r2tao.rb +235 -232
- data/rakelib/gem.rake +235 -211
- data/rakelib/gem.rb +145 -145
- data/rakelib/package.rake +26 -26
- data/rakelib/test.rake +23 -23
- data/test/BiDirectional/Test.idl +34 -34
- data/test/BiDirectional/client.rb +131 -131
- data/test/BiDirectional/run_test.rb +68 -68
- data/test/BiDirectional/server.ior +1 -1
- data/test/BiDirectional/server.rb +169 -169
- data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -27
- data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -121
- data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -1
- data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -82
- data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -109
- data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -27
- data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -85
- data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -1
- data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -88
- data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -135
- data/test/CORBA_Services/Naming/Simple/Test.idl +27 -27
- data/test/CORBA_Services/Naming/Simple/client.rb +84 -84
- data/test/CORBA_Services/Naming/Simple/ins.ior +1 -1
- data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -82
- data/test/CORBA_Services/Naming/Simple/server.rb +109 -109
- data/test/Collocation/Diamond.idl +39 -39
- data/test/Collocation/run_test.rb +52 -52
- data/test/Collocation/test.rb +195 -195
- data/test/Connect_Timeout/Test.idl +27 -27
- data/test/Connect_Timeout/client.rb +111 -111
- data/test/Connect_Timeout/run_test.rb +52 -52
- data/test/DII/Test.idl +27 -27
- data/test/DII/client.rb +115 -115
- data/test/DII/run_test.rb +69 -69
- data/test/DII/server.ior +1 -1
- data/test/DII/server.rb +95 -95
- data/test/DSI/Test.idl +27 -27
- data/test/DSI/client.rb +66 -66
- data/test/DSI/run_test.rb +69 -69
- data/test/DSI/server.ior +1 -1
- data/test/DSI/server.rb +106 -106
- data/test/Exceptions/Test.idl +48 -48
- data/test/Exceptions/client.rb +117 -117
- data/test/Exceptions/run_test.rb +69 -69
- data/test/Exceptions/server.ior +1 -1
- data/test/Exceptions/server.rb +131 -131
- data/test/Hello/Test.idl +27 -27
- data/test/Hello/client.rb +78 -78
- data/test/Hello/run_test.rb +71 -71
- data/test/Hello/server.rb +95 -95
- data/test/IDL_Test/Test.idl +113 -113
- data/test/IDL_Test/Test_inc.idl +17 -17
- data/test/IDL_Test/client.rb +102 -102
- data/test/IDL_Test/run_test.rb +69 -69
- data/test/IDL_Test/server.ior +1 -1
- data/test/IDL_Test/server.rb +99 -99
- data/test/IORMap/Test.idl +27 -27
- data/test/IORMap/client.rb +73 -73
- data/test/IORMap/run_test.rb +69 -69
- data/test/IORMap/server.ior +1 -1
- data/test/IORMap/server.rb +114 -114
- data/test/IORTable/Test.idl +27 -27
- data/test/IORTable/client.rb +75 -75
- data/test/IORTable/run_test.rb +69 -69
- data/test/IORTable/server.ior +1 -1
- data/test/IORTable/server.rb +130 -130
- data/test/Implicit_Conversion/Test.idl +31 -31
- data/test/Implicit_Conversion/client.rb +110 -110
- data/test/Implicit_Conversion/run_test.rb +69 -69
- data/test/Implicit_Conversion/server.ior +1 -1
- data/test/Implicit_Conversion/server.rb +99 -99
- data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -27
- data/test/Multi_Threading/Multiple_ORB/client.rb +82 -82
- data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -71
- data/test/Multi_Threading/Multiple_ORB/server.rb +108 -108
- data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -1
- data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -1
- data/test/Multi_Threading/Simple/Test.idl +27 -27
- data/test/Multi_Threading/Simple/client.rb +93 -88
- data/test/Multi_Threading/Simple/run_test.rb +69 -69
- data/test/Multi_Threading/Simple/server.ior +1 -1
- data/test/Multi_Threading/Simple/server.rb +117 -117
- data/test/Multi_Threading/Threads/Test.idl +31 -31
- data/test/Multi_Threading/Threads/client.rb +80 -80
- data/test/Multi_Threading/Threads/run_test.rb +76 -76
- data/test/Multi_Threading/Threads/server.ior +1 -1
- data/test/Multi_Threading/Threads/server.rb +119 -119
- data/test/Multi_Threading/Threads/watchdog.ior +1 -1
- data/test/Multi_Threading/Threads/watchdog.rb +87 -87
- data/test/Multiple_Servant_Interfaces/Test.idl +34 -34
- data/test/Multiple_Servant_Interfaces/client.rb +70 -70
- data/test/Multiple_Servant_Interfaces/run_test.rb +69 -69
- data/test/Multiple_Servant_Interfaces/server.ior +1 -1
- data/test/Multiple_Servant_Interfaces/server.rb +102 -102
- data/test/Nil/Test.idl +27 -27
- data/test/Nil/run_test.rb +52 -52
- data/test/Nil/test.rb +78 -78
- data/test/OBV/AbstractInterface/client.rb +179 -179
- data/test/OBV/AbstractInterface/run_test.rb +69 -69
- data/test/OBV/AbstractInterface/server.ior +1 -1
- data/test/OBV/AbstractInterface/server.rb +149 -149
- data/test/OBV/AbstractInterface/test.idl +53 -53
- data/test/OBV/Custom/OBV.idl +18 -18
- data/test/OBV/Custom/OBV_impl.rb +40 -40
- data/test/OBV/Custom/client.rb +86 -86
- data/test/OBV/Custom/run_test.rb +69 -69
- data/test/OBV/Custom/server.ior +1 -1
- data/test/OBV/Custom/server.rb +100 -100
- data/test/OBV/Simple/OBV.idl +15 -15
- data/test/OBV/Simple/OBV_impl.rb +26 -26
- data/test/OBV/Simple/client.rb +86 -86
- data/test/OBV/Simple/run_test.rb +69 -69
- data/test/OBV/Simple/server.ior +1 -1
- data/test/OBV/Simple/server.rb +100 -100
- data/test/OBV/Simple_Event/Event.idl +15 -15
- data/test/OBV/Simple_Event/Event_impl.rb +26 -26
- data/test/OBV/Simple_Event/client.rb +86 -86
- data/test/OBV/Simple_Event/run_test.rb +69 -69
- data/test/OBV/Simple_Event/server.ior +1 -1
- data/test/OBV/Simple_Event/server.rb +100 -100
- data/test/OBV/Supports/client.rb +116 -116
- data/test/OBV/Supports/run_test.rb +69 -69
- data/test/OBV/Supports/server.ior +1 -1
- data/test/OBV/Supports/server.rb +103 -103
- data/test/OBV/Supports/supports.idl +33 -33
- data/test/OBV/Supports/supports_impl.rb +57 -57
- data/test/OBV/Tree/client.rb +116 -116
- data/test/OBV/Tree/run_test.rb +69 -69
- data/test/OBV/Tree/server.ior +1 -1
- data/test/OBV/Tree/server.rb +117 -117
- data/test/OBV/Tree/test.idl +32 -32
- data/test/OBV/Truncatable/Extra.idl +27 -27
- data/test/OBV/Truncatable/Truncatable.idl +105 -105
- data/test/OBV/Truncatable/Truncatable_impl.rb +86 -86
- data/test/OBV/Truncatable/client.rb +279 -279
- data/test/OBV/Truncatable/run_test.rb +69 -69
- data/test/OBV/Truncatable/server.ior +1 -1
- data/test/OBV/Truncatable/server.rb +89 -89
- data/test/OBV/ValueBox/client.rb +497 -497
- data/test/OBV/ValueBox/run_test.rb +69 -69
- data/test/OBV/ValueBox/server.ior +1 -1
- data/test/OBV/ValueBox/server.rb +271 -271
- data/test/OBV/ValueBox/valuebox.idl +101 -101
- data/test/OBV/ValueBox/vb_basic.idl +75 -75
- data/test/OBV/ValueBox/vb_struct.idl +68 -68
- data/test/OBV/ValueBox/vb_union.idl +21 -21
- data/test/Object/Test.idl +27 -27
- data/test/Object/client.rb +112 -103
- data/test/Object/run_test.rb +69 -69
- data/test/Object/server.ior +1 -1
- data/test/Object/server.rb +126 -126
- data/test/POA/Test.idl +27 -27
- data/test/POA/run_test.rb +52 -52
- data/test/POA/test.rb +111 -111
- data/test/Param_Test/Test.idl +182 -182
- data/test/Param_Test/client.rb +277 -277
- data/test/Param_Test/run_test.rb +69 -69
- data/test/Param_Test/server.ior +1 -1
- data/test/Param_Test/server.rb +296 -296
- data/test/Performance/Simple/Test.idl +27 -27
- data/test/Performance/Simple/client.rb +90 -90
- data/test/Performance/Simple/run_test.rb +69 -69
- data/test/Performance/Simple/server.ior +1 -1
- data/test/Performance/Simple/server.rb +95 -95
- data/test/Policies/Test.idl +27 -27
- data/test/Policies/run_test.rb +52 -52
- data/test/Policies/test.rb +144 -144
- data/test/Timeout/client.rb +207 -207
- data/test/Timeout/run_test.rb +69 -69
- data/test/Timeout/server.ior +1 -1
- data/test/Timeout/server.rb +109 -109
- data/test/Timeout/test.idl +19 -19
- data/test/lib/assert.rb +43 -43
- data/test/lib/test.rb +542 -542
- data/test/test_runner.rb +193 -193
- metadata +141 -137
data/lib/corba/common/require.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
#--------------------------------------------------------------------
|
2
|
-
# require.rb - R2CORBA loader
|
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
|
-
[ 'version',
|
15
|
-
'const',
|
16
|
-
'IDL',
|
17
|
-
'exception',
|
18
|
-
'Stub',
|
19
|
-
'Struct',
|
20
|
-
'Union',
|
21
|
-
'Typecode',
|
22
|
-
'Values',
|
23
|
-
'Any',
|
24
|
-
'Object',
|
25
|
-
'ORB',
|
26
|
-
'Request'
|
27
|
-
].each { |f| require "corba/common/#{f}.rb" }
|
1
|
+
#--------------------------------------------------------------------
|
2
|
+
# require.rb - R2CORBA loader
|
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
|
+
[ 'version',
|
15
|
+
'const',
|
16
|
+
'IDL',
|
17
|
+
'exception',
|
18
|
+
'Stub',
|
19
|
+
'Struct',
|
20
|
+
'Union',
|
21
|
+
'Typecode',
|
22
|
+
'Values',
|
23
|
+
'Any',
|
24
|
+
'Object',
|
25
|
+
'ORB',
|
26
|
+
'Request'
|
27
|
+
].each { |f| require "corba/common/#{f}.rb" }
|
data/lib/corba/common/version.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
#--------------------------------------------------------------------
|
2
|
-
# version.rb - R2CORBA version constants
|
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
|
-
|
16
|
-
R2CORBA_MAJOR = 1.freeze
|
17
|
-
R2CORBA_MINOR =
|
18
|
-
R2CORBA_RELEASE = '1'.freeze
|
19
|
-
|
20
|
-
R2CORBA_VERSION = "#{R2CORBA_MAJOR}.#{R2CORBA_MINOR}.#{R2CORBA_RELEASE}".freeze
|
21
|
-
|
22
|
-
end
|
1
|
+
#--------------------------------------------------------------------
|
2
|
+
# version.rb - R2CORBA version constants
|
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
|
+
|
16
|
+
R2CORBA_MAJOR = 1.freeze
|
17
|
+
R2CORBA_MINOR = 5.freeze
|
18
|
+
R2CORBA_RELEASE = '1'.freeze
|
19
|
+
|
20
|
+
R2CORBA_VERSION = "#{R2CORBA_MAJOR}.#{R2CORBA_MINOR}.#{R2CORBA_RELEASE}".freeze
|
21
|
+
|
22
|
+
end
|
data/lib/corba/idl/IDL.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
#--------------------------------------------------------------------
|
2
|
-
# IDL.rb - R2CORBA inline IDL 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
|
-
# Chamber of commerce Rotterdam nr.276339, The Netherlands
|
12
|
-
#--------------------------------------------------------------------
|
13
|
-
module R2CORBA
|
14
|
-
|
15
|
-
module CORBA
|
16
|
-
def CORBA.implement(idlfile, params={}, genbits = IDL::CLIENT_STUB, &block)
|
17
|
-
IDL.implement(idlfile, params, genbits, &block)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
1
|
+
#--------------------------------------------------------------------
|
2
|
+
# IDL.rb - R2CORBA inline IDL 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
|
+
# Chamber of commerce Rotterdam nr.276339, The Netherlands
|
12
|
+
#--------------------------------------------------------------------
|
13
|
+
module R2CORBA
|
14
|
+
|
15
|
+
module CORBA
|
16
|
+
def CORBA.implement(idlfile, params={}, genbits = IDL::CLIENT_STUB, &block)
|
17
|
+
IDL.implement(idlfile, params, genbits, &block)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/lib/corba/idl/IORTable.pidl
CHANGED
@@ -1,62 +1,62 @@
|
|
1
|
-
// -*- IDL -*-
|
2
|
-
// $Id$
|
3
|
-
|
4
|
-
#ifndef R2TAO_IORTABLE_IORTABLE_PIDL
|
5
|
-
#define R2TAO_IORTABLE_IORTABLE_PIDL
|
6
|
-
|
7
|
-
/// Define a module to avoid namespace pollution
|
8
|
-
module IORTable
|
9
|
-
{
|
10
|
-
local interface Locator;
|
11
|
-
|
12
|
-
/// The object key is already in the IORTable
|
13
|
-
exception AlreadyBound {};
|
14
|
-
|
15
|
-
/// Cannot find the object key in the IORTable
|
16
|
-
exception NotFound {};
|
17
|
-
|
18
|
-
/// Define the IORTable interface
|
19
|
-
/**
|
20
|
-
*
|
21
|
-
* Any TAO server can be configured as an corbaloc agent.
|
22
|
-
* Such agents forward requests generated using a simple
|
23
|
-
* ObjectKey in a corbaloc specifcation to the real location
|
24
|
-
* of the object.
|
25
|
-
* In TAO we implement this feature by dynamically (or
|
26
|
-
* statically) adding a new Object Adapter to the ORB, that
|
27
|
-
* handles any sort of request.
|
28
|
-
*/
|
29
|
-
local interface Table
|
30
|
-
{
|
31
|
-
/// Bind @a object_key to the @a IOR
|
32
|
-
void bind (in string object_key,
|
33
|
-
in string IOR)
|
34
|
-
raises (AlreadyBound);
|
35
|
-
|
36
|
-
/// Bind @a object_key to the @a IOR
|
37
|
-
void rebind (in string object_key,
|
38
|
-
in string IOR);
|
39
|
-
|
40
|
-
/// Remove the binding for @a object_key
|
41
|
-
void unbind (in string object_key)
|
42
|
-
raises (NotFound);
|
43
|
-
|
44
|
-
/// Set the locator, if no binding is set for an object_key we try
|
45
|
-
/// to use the locator to resolve it
|
46
|
-
void set_locator (in Locator the_locator);
|
47
|
-
};
|
48
|
-
|
49
|
-
/// Callback interface to locate object keys dynamically
|
50
|
-
/**
|
51
|
-
* The application can provide a callback interface to locate object
|
52
|
-
* keys dynamically.
|
53
|
-
*/
|
54
|
-
local interface Locator
|
55
|
-
{
|
56
|
-
/// Returns an IOR to use for @a object_key
|
57
|
-
string locate (in string object_key)
|
58
|
-
raises (NotFound);
|
59
|
-
};
|
60
|
-
};
|
61
|
-
|
62
|
-
#endif /* R2TAO_IORTABLE_IORTABLE_PIDL */
|
1
|
+
// -*- IDL -*-
|
2
|
+
// $Id$
|
3
|
+
|
4
|
+
#ifndef R2TAO_IORTABLE_IORTABLE_PIDL
|
5
|
+
#define R2TAO_IORTABLE_IORTABLE_PIDL
|
6
|
+
|
7
|
+
/// Define a module to avoid namespace pollution
|
8
|
+
module IORTable
|
9
|
+
{
|
10
|
+
local interface Locator;
|
11
|
+
|
12
|
+
/// The object key is already in the IORTable
|
13
|
+
exception AlreadyBound {};
|
14
|
+
|
15
|
+
/// Cannot find the object key in the IORTable
|
16
|
+
exception NotFound {};
|
17
|
+
|
18
|
+
/// Define the IORTable interface
|
19
|
+
/**
|
20
|
+
*
|
21
|
+
* Any TAO server can be configured as an corbaloc agent.
|
22
|
+
* Such agents forward requests generated using a simple
|
23
|
+
* ObjectKey in a corbaloc specifcation to the real location
|
24
|
+
* of the object.
|
25
|
+
* In TAO we implement this feature by dynamically (or
|
26
|
+
* statically) adding a new Object Adapter to the ORB, that
|
27
|
+
* handles any sort of request.
|
28
|
+
*/
|
29
|
+
local interface Table
|
30
|
+
{
|
31
|
+
/// Bind @a object_key to the @a IOR
|
32
|
+
void bind (in string object_key,
|
33
|
+
in string IOR)
|
34
|
+
raises (AlreadyBound);
|
35
|
+
|
36
|
+
/// Bind @a object_key to the @a IOR
|
37
|
+
void rebind (in string object_key,
|
38
|
+
in string IOR);
|
39
|
+
|
40
|
+
/// Remove the binding for @a object_key
|
41
|
+
void unbind (in string object_key)
|
42
|
+
raises (NotFound);
|
43
|
+
|
44
|
+
/// Set the locator, if no binding is set for an object_key we try
|
45
|
+
/// to use the locator to resolve it
|
46
|
+
void set_locator (in Locator the_locator);
|
47
|
+
};
|
48
|
+
|
49
|
+
/// Callback interface to locate object keys dynamically
|
50
|
+
/**
|
51
|
+
* The application can provide a callback interface to locate object
|
52
|
+
* keys dynamically.
|
53
|
+
*/
|
54
|
+
local interface Locator
|
55
|
+
{
|
56
|
+
/// Returns an IOR to use for @a object_key
|
57
|
+
string locate (in string object_key)
|
58
|
+
raises (NotFound);
|
59
|
+
};
|
60
|
+
};
|
61
|
+
|
62
|
+
#endif /* R2TAO_IORTABLE_IORTABLE_PIDL */
|
data/lib/corba/idl/TAO_Ext.pidl
CHANGED
@@ -1,46 +1,46 @@
|
|
1
|
-
// -*- IDL -*-
|
2
|
-
// $Id$
|
3
|
-
|
4
|
-
#ifndef R2TAO_TAO_EXT_IDL
|
5
|
-
#define R2TAO_TAO_EXT_IDL
|
6
|
-
|
7
|
-
#include "TimeBase.pidl"
|
8
|
-
|
9
|
-
#pragma prefix "tao"
|
10
|
-
|
11
|
-
module TAO
|
12
|
-
{
|
13
|
-
const CORBA::PolicyType CONNECTION_TIMEOUT_POLICY_TYPE = 0x54410008;
|
14
|
-
|
15
|
-
local interface ConnectionTimeoutPolicy : CORBA::Policy {
|
16
|
-
readonly attribute TimeBase::TimeT relative_expiry;
|
17
|
-
};
|
18
|
-
|
19
|
-
//
|
20
|
-
// Buffering constraint.
|
21
|
-
//
|
22
|
-
typedef unsigned short BufferingConstraintMode;
|
23
|
-
const BufferingConstraintMode BUFFER_FLUSH = 0x00;
|
24
|
-
|
25
|
-
// Note that timeout, message_count, and message_bytes can be or'd.
|
26
|
-
const BufferingConstraintMode BUFFER_TIMEOUT = 0x01;
|
27
|
-
const BufferingConstraintMode BUFFER_MESSAGE_COUNT = 0x02;
|
28
|
-
const BufferingConstraintMode BUFFER_MESSAGE_BYTES = 0x04;
|
29
|
-
|
30
|
-
struct BufferingConstraint
|
31
|
-
{
|
32
|
-
BufferingConstraintMode mode;
|
33
|
-
TimeBase::TimeT timeout;
|
34
|
-
unsigned long message_count;
|
35
|
-
unsigned long message_bytes;
|
36
|
-
};
|
37
|
-
|
38
|
-
const CORBA::PolicyType BUFFERING_CONSTRAINT_POLICY_TYPE = 0x54410001;
|
39
|
-
|
40
|
-
local interface BufferingConstraintPolicy : CORBA::Policy
|
41
|
-
{
|
42
|
-
readonly attribute BufferingConstraint buffering_constraint;
|
43
|
-
};
|
44
|
-
};
|
45
|
-
|
46
|
-
#endif /* TAO_TAO_EXT_IDL */
|
1
|
+
// -*- IDL -*-
|
2
|
+
// $Id$
|
3
|
+
|
4
|
+
#ifndef R2TAO_TAO_EXT_IDL
|
5
|
+
#define R2TAO_TAO_EXT_IDL
|
6
|
+
|
7
|
+
#include "TimeBase.pidl"
|
8
|
+
|
9
|
+
#pragma prefix "tao"
|
10
|
+
|
11
|
+
module TAO
|
12
|
+
{
|
13
|
+
const CORBA::PolicyType CONNECTION_TIMEOUT_POLICY_TYPE = 0x54410008;
|
14
|
+
|
15
|
+
local interface ConnectionTimeoutPolicy : CORBA::Policy {
|
16
|
+
readonly attribute TimeBase::TimeT relative_expiry;
|
17
|
+
};
|
18
|
+
|
19
|
+
//
|
20
|
+
// Buffering constraint.
|
21
|
+
//
|
22
|
+
typedef unsigned short BufferingConstraintMode;
|
23
|
+
const BufferingConstraintMode BUFFER_FLUSH = 0x00;
|
24
|
+
|
25
|
+
// Note that timeout, message_count, and message_bytes can be or'd.
|
26
|
+
const BufferingConstraintMode BUFFER_TIMEOUT = 0x01;
|
27
|
+
const BufferingConstraintMode BUFFER_MESSAGE_COUNT = 0x02;
|
28
|
+
const BufferingConstraintMode BUFFER_MESSAGE_BYTES = 0x04;
|
29
|
+
|
30
|
+
struct BufferingConstraint
|
31
|
+
{
|
32
|
+
BufferingConstraintMode mode;
|
33
|
+
TimeBase::TimeT timeout;
|
34
|
+
unsigned long message_count;
|
35
|
+
unsigned long message_bytes;
|
36
|
+
};
|
37
|
+
|
38
|
+
const CORBA::PolicyType BUFFERING_CONSTRAINT_POLICY_TYPE = 0x54410001;
|
39
|
+
|
40
|
+
local interface BufferingConstraintPolicy : CORBA::Policy
|
41
|
+
{
|
42
|
+
readonly attribute BufferingConstraint buffering_constraint;
|
43
|
+
};
|
44
|
+
};
|
45
|
+
|
46
|
+
#endif /* TAO_TAO_EXT_IDL */
|
data/lib/corba/idl/require.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
#--------------------------------------------------------------------
|
2
|
-
# require.rb - R2CORBA loader
|
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
|
-
require 'corba/idl/IDL.rb'
|
15
|
-
require 'corba/idl/r2c_orb.rb'
|
16
|
-
|
17
|
-
## fake Ruby into believing 'orb.rb' has already been loaded
|
18
|
-
## which is what the IDL compiler will generate for
|
19
|
-
## '#include "orb.idl"'
|
20
|
-
$" << 'orb.rb'
|
1
|
+
#--------------------------------------------------------------------
|
2
|
+
# require.rb - R2CORBA loader
|
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
|
+
require 'corba/idl/IDL.rb'
|
15
|
+
require 'corba/idl/r2c_orb.rb'
|
16
|
+
|
17
|
+
## fake Ruby into believing 'orb.rb' has already been loaded
|
18
|
+
## which is what the IDL compiler will generate for
|
19
|
+
## '#include "orb.idl"'
|
20
|
+
$" << 'orb.rb'
|
data/lib/corba/jbase/Any.rb
CHANGED
@@ -1,273 +1,273 @@
|
|
1
|
-
#--------------------------------------------------------------------
|
2
|
-
# Any.rb - CORBA Any 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
|
-
# Chamber of commerce Rotterdam nr.276339, The Netherlands
|
12
|
-
#--------------------------------------------------------------------
|
13
|
-
module R2CORBA
|
14
|
-
module CORBA
|
15
|
-
module Native
|
16
|
-
module Dynamic
|
17
|
-
include_package 'org.omg.DynamicAny'
|
18
|
-
end
|
19
|
-
module Reflect
|
20
|
-
java_import java.lang.reflect.Array
|
21
|
-
end
|
22
|
-
end
|
23
|
-
class Any
|
24
|
-
def to_java(jorb=nil,jany=nil)
|
25
|
-
rtc = self._tc
|
26
|
-
rval = self._value.nil? ? self._value : rtc.validate(self._value)
|
27
|
-
restc = rtc.resolved_tc
|
28
|
-
begin
|
29
|
-
if [TK_VALUE, TK_VALUE_BOX, TK_ABSTRACT_INTERFACE].include?(restc.kind) ||
|
30
|
-
(!rval.nil? && [TK_NULL,TK_ANY,TK_BOOLEAN,TK_SHORT,TK_LONG,TK_USHORT,
|
31
|
-
TK_WCHAR,TK_ULONG,TK_LONGLONG,TK_ULONGLONG,TK_OCTET,
|
32
|
-
TK_FLOAT,TK_DOUBLE,TK_LONGDOUBLE,TK_CHAR,TK_STRING,TK_WSTRING,
|
33
|
-
TK_VALUE, TK_VALUE_BOX,TK_TYPECODE,TK_OBJREF,TK_PRINCIPAL].include?(restc.kind))
|
34
|
-
jorb ||= CORBA::ORB._orb
|
35
|
-
jany ||= jorb.create_any()
|
36
|
-
case restc.kind
|
37
|
-
when TK_NULL
|
38
|
-
# leave any as is
|
39
|
-
when TK_ANY
|
40
|
-
jany.insert_any(rval.to_java(jorb))
|
41
|
-
when TK_BOOLEAN
|
42
|
-
jany.insert_boolean(rval)
|
43
|
-
when TK_SHORT
|
44
|
-
jany.insert_short(rval)
|
45
|
-
when TK_LONG
|
46
|
-
jany.insert_long(rval)
|
47
|
-
when TK_USHORT
|
48
|
-
jany.insert_ushort([rval].pack('S').unpack('s').first)
|
49
|
-
when TK_WCHAR
|
50
|
-
jany.insert_wchar(rval)
|
51
|
-
when TK_ULONG
|
52
|
-
jany.insert_ulong([rval].pack('L').unpack('l').first)
|
53
|
-
when TK_LONGLONG
|
54
|
-
jany.insert_longlong(rval)
|
55
|
-
when TK_ULONGLONG
|
56
|
-
jany.insert_ulonglong([rval].pack('Q').unpack('q').first)
|
57
|
-
when TK_OCTET
|
58
|
-
jany.insert_octet([rval].pack('C').unpack('c').first)
|
59
|
-
when TK_FLOAT
|
60
|
-
jany.insert_float(rval)
|
61
|
-
when TK_DOUBLE
|
62
|
-
jany.insert_double(rval)
|
63
|
-
when TK_LONGDOUBLE
|
64
|
-
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
65
|
-
when TK_FIXED
|
66
|
-
jany.insert_fixed(java.math.BigDecimal.new(rval.to_s))
|
67
|
-
when TK_CHAR
|
68
|
-
jany.insert_char(rval[0])
|
69
|
-
when TK_STRING
|
70
|
-
jany.insert_string(rval)
|
71
|
-
when TK_WSTRING
|
72
|
-
jany.insert_wstring(rval.inject('') {|s,b| s << b.chr})
|
73
|
-
when TK_VALUE
|
74
|
-
jany.insert_Value(rval, rtc.tc_)
|
75
|
-
when TK_VALUE_BOX
|
76
|
-
rtc.get_type::Factory._check_factory(jorb) # make sure valuebox factory has been registered
|
77
|
-
rval = rtc.get_type.new(rval) unless rval.nil? || rval.is_a?(CORBA::Portable::BoxedValueBase)
|
78
|
-
jany.insert_Value(rval, rtc.tc_)
|
79
|
-
when TK_TYPECODE
|
80
|
-
jany.insert_TypeCode(rtc.tc_)
|
81
|
-
when TK_OBJREF
|
82
|
-
jany.insert_Object(rval.objref_)
|
83
|
-
when TK_ABSTRACT_INTERFACE
|
84
|
-
if rval.is_a?(CORBA::Object)
|
85
|
-
# since we know what we're doing use this convenience method provided
|
86
|
-
# by JacORB so we only make a shallow copy of the object ref
|
87
|
-
# insert_Object() will throw an exception because the typecode is not
|
88
|
-
# an objref tc but rather an abstract interface tc
|
89
|
-
if CORBA::Native::Jacorb::MAJOR_VERSION < 3
|
90
|
-
jany.insert_object(rtc.tc_, rval.objref_)
|
91
|
-
else
|
92
|
-
jany.insert(rtc.tc_, rval.objref_)
|
93
|
-
end
|
94
|
-
else
|
95
|
-
jany.insert_Value(rval, rtc.tc_)
|
96
|
-
end
|
97
|
-
when TK_PRINCIPAL
|
98
|
-
raise CORBA::NO_IMPLEMENT.new('Principal not supported',0,CORBA::COMPLETED_NO)
|
99
|
-
## TODO: TK_NATIVE
|
100
|
-
else
|
101
|
-
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
102
|
-
end
|
103
|
-
return jany
|
104
|
-
else
|
105
|
-
dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
|
106
|
-
(jorb || CORBA::ORB._orb).resolve_initial_references("DynAnyFactory"))
|
107
|
-
jdynany = dynFactory.create_dyn_any_from_type_code(rtc.tc_)
|
108
|
-
begin
|
109
|
-
unless rval.nil?
|
110
|
-
restc = rtc.resolved_tc
|
111
|
-
case restc.kind
|
112
|
-
when TK_ENUM
|
113
|
-
jdynany.set_as_ulong(rval)
|
114
|
-
when TK_ARRAY
|
115
|
-
jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
|
116
|
-
rval.each_with_index {|e,i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
|
117
|
-
jdynany.set_elements(jelems)
|
118
|
-
when TK_SEQUENCE
|
119
|
-
jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
|
120
|
-
rval.each_with_index {|e,i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
|
121
|
-
jdynany.set_elements(jelems)
|
122
|
-
when TK_STRUCT, TK_EXCEPT
|
123
|
-
jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Dynamic::NameValuePair.java_class, restc.members.size)
|
124
|
-
rtc.members.each_with_index {|(mn, mt),i| jmembers[i] = CORBA::Native::Dynamic::NameValuePair.new(mn, Any.to_any(rval.__send__(mn.intern), mt).to_java(jorb)) }
|
125
|
-
jdynany.set_members(jmembers)
|
126
|
-
when TK_UNION
|
127
|
-
if rval._is_at_default?
|
128
|
-
jdynany.set_to_default_member
|
129
|
-
elsif rval._disc.nil?
|
130
|
-
jdynany.set_to_no_active_member
|
131
|
-
else
|
132
|
-
jdynany.set_discriminator(dynFactory.create_dyn_any(Any.to_any(rval._disc, restc.discriminator_type).to_java(jorb)))
|
133
|
-
end
|
134
|
-
unless rval._disc.nil? || rval._value.nil?
|
135
|
-
jdynany.member.from_any(Any.to_any(rval._value, rval._value_tc).to_java(jorb))
|
136
|
-
end
|
137
|
-
else
|
138
|
-
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
139
|
-
end
|
140
|
-
end
|
141
|
-
if jany.nil?
|
142
|
-
jany = jdynany.to_any
|
143
|
-
else
|
144
|
-
jany.read_value(jdynany.to_any.create_input_stream(), rtc.tc_)
|
145
|
-
end
|
146
|
-
ensure
|
147
|
-
jdynany.destroy
|
148
|
-
end
|
149
|
-
return jany
|
150
|
-
end
|
151
|
-
rescue ::NativeException
|
152
|
-
CORBA::Exception.native2r($!)
|
153
|
-
end
|
154
|
-
end # to_java
|
155
|
-
|
156
|
-
def Any.from_java(jany, jorb=nil, rtc=nil)
|
157
|
-
rtc ||= CORBA::TypeCode.from_native(jany.type)
|
158
|
-
rval = nil
|
159
|
-
begin
|
160
|
-
if [TK_NULL,TK_VOID,TK_ANY,TK_BOOLEAN,TK_SHORT,TK_LONG,TK_USHORT,
|
161
|
-
TK_WCHAR,TK_ULONG,TK_LONGLONG,TK_ULONGLONG,TK_OCTET,
|
162
|
-
TK_FLOAT,TK_DOUBLE,TK_LONGDOUBLE,TK_CHAR,TK_STRING,TK_WSTRING,
|
163
|
-
TK_VALUE, TK_VALUE_BOX,TK_TYPECODE,TK_OBJREF,
|
164
|
-
TK_ABSTRACT_INTERFACE,TK_PRINCIPAL].include?(rtc.resolved_tc.kind)
|
165
|
-
case rtc.resolved_tc.kind
|
166
|
-
when TK_NULL, TK_VOID
|
167
|
-
# leave as is
|
168
|
-
when TK_ANY
|
169
|
-
rval = Any.from_java(jany.extract_any(), jorb)
|
170
|
-
when TK_BOOLEAN
|
171
|
-
rval = jany.extract_boolean()
|
172
|
-
when TK_SHORT
|
173
|
-
rval = jany.extract_short()
|
174
|
-
when TK_LONG
|
175
|
-
rval = jany.extract_long()
|
176
|
-
when TK_USHORT
|
177
|
-
rval = [jany.extract_ushort()].pack('s').unpack('S').first
|
178
|
-
when TK_WCHAR
|
179
|
-
rval = jany.extract_wchar()
|
180
|
-
when TK_ULONG
|
181
|
-
rval = [jany.extract_ulong()].pack('l').unpack('L').first
|
182
|
-
when TK_LONGLONG
|
183
|
-
rval = jany.extract_longlong()
|
184
|
-
when TK_ULONGLONG
|
185
|
-
rval = [jany.extract_ulonglong()].pack('q').unpack('Q').first
|
186
|
-
when TK_OCTET
|
187
|
-
rval = [jany.extract_octet()].pack('c').unpack('C').first
|
188
|
-
when TK_FLOAT
|
189
|
-
rval = jany.extract_float()
|
190
|
-
when TK_DOUBLE
|
191
|
-
rval = jany.extract_double()
|
192
|
-
when TK_LONGDOUBLE
|
193
|
-
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
194
|
-
when TK_FIXED
|
195
|
-
rval = BigDecimal.new(jany.extract_fixed().toString())
|
196
|
-
when TK_CHAR
|
197
|
-
rval = jany.extract_char().chr
|
198
|
-
when TK_STRING
|
199
|
-
rval = jany.extract_string()
|
200
|
-
when TK_WSTRING
|
201
|
-
rval = jany.extract_wstring()
|
202
|
-
when TK_VALUE
|
203
|
-
rval = jany.extract_Value()
|
204
|
-
when TK_VALUE_BOX
|
205
|
-
rtc.get_type::Factory._check_factory(jorb || CORBA::ORB._orb) # make sure valuebox factory has been registered
|
206
|
-
rval = jany.extract_Value()
|
207
|
-
rval = rval.value unless rval.nil?
|
208
|
-
when TK_TYPECODE
|
209
|
-
rval = CORBA::TypeCode.from_native(jany.extract_TypeCode())
|
210
|
-
when TK_OBJREF
|
211
|
-
rval = CORBA::Object._wrap_native(jany.extract_Object())
|
212
|
-
rval = rtc.get_type._narrow(rval) if rval
|
213
|
-
when TK_ABSTRACT_INTERFACE
|
214
|
-
jobj = jany.create_input_stream().read_abstract_interface()
|
215
|
-
rval = if jobj.is_a?(CORBA::Native::Object)
|
216
|
-
rtc.get_type._narrow(CORBA::Object._wrap_native(jobj))
|
217
|
-
else
|
218
|
-
jobj
|
219
|
-
end
|
220
|
-
when TK_PRINCIPAL
|
221
|
-
raise CORBA::NO_IMPLEMENT.new('Principal not supported',0,CORBA::COMPLETED_NO)
|
222
|
-
## TODO: TK_NATIVE
|
223
|
-
else
|
224
|
-
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
225
|
-
end
|
226
|
-
else
|
227
|
-
dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
|
228
|
-
(jorb || CORBA::ORB._orb).resolve_initial_references("DynAnyFactory"))
|
229
|
-
jdynany = dynFactory.create_dyn_any(jany)
|
230
|
-
begin
|
231
|
-
restc = rtc.resolved_tc
|
232
|
-
case restc.kind
|
233
|
-
when TK_ENUM
|
234
|
-
rval = jdynany.get_as_ulong()
|
235
|
-
when TK_ARRAY
|
236
|
-
rval = rtc.get_type.new
|
237
|
-
jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
|
238
|
-
when TK_SEQUENCE
|
239
|
-
rval = rtc.get_type.new
|
240
|
-
jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
|
241
|
-
when TK_STRUCT, TK_EXCEPT
|
242
|
-
rval = rtc.get_type.new
|
243
|
-
jdynany.get_members().each_with_index {|nvp,i| rval.__send__("#{nvp.id}=".intern, Any.from_java(nvp.value, jorb, restc.member_type(i))) }
|
244
|
-
when TK_UNION
|
245
|
-
rval = rtc.get_type.new
|
246
|
-
if jdynany.get_discriminator().type().kind().value() == CORBA::TK_OCTET
|
247
|
-
rdisc = jdynany.get_discriminator().get_octet()
|
248
|
-
# Octet 0 designates default member
|
249
|
-
rdisc = rdisc == 0 ? :default : rdisc
|
250
|
-
else
|
251
|
-
rdisc = Any.from_java(jdynany.get_discriminator().to_any(), jorb, restc.discriminator_type)
|
252
|
-
end
|
253
|
-
rval.instance_variable_set('@discriminator', rdisc)
|
254
|
-
unless jdynany.has_no_active_member
|
255
|
-
minx = rtc.label_index(rdisc)
|
256
|
-
rval.instance_variable_set('@value', Any.from_java(jdynany.member.to_any, jorb, restc.member_type(minx)))
|
257
|
-
end
|
258
|
-
else
|
259
|
-
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
260
|
-
end
|
261
|
-
ensure
|
262
|
-
jdynany.destroy
|
263
|
-
end
|
264
|
-
end
|
265
|
-
rescue ::NativeException
|
266
|
-
CORBA::Exception.native2r($!)
|
267
|
-
end
|
268
|
-
return rval
|
269
|
-
end # from_java
|
270
|
-
|
271
|
-
end # Any
|
272
|
-
end # CORBA
|
273
|
-
end # R2CORBA
|
1
|
+
#--------------------------------------------------------------------
|
2
|
+
# Any.rb - CORBA Any 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
|
+
# Chamber of commerce Rotterdam nr.276339, The Netherlands
|
12
|
+
#--------------------------------------------------------------------
|
13
|
+
module R2CORBA
|
14
|
+
module CORBA
|
15
|
+
module Native
|
16
|
+
module Dynamic
|
17
|
+
include_package 'org.omg.DynamicAny'
|
18
|
+
end
|
19
|
+
module Reflect
|
20
|
+
java_import java.lang.reflect.Array
|
21
|
+
end
|
22
|
+
end
|
23
|
+
class Any
|
24
|
+
def to_java(jorb=nil,jany=nil)
|
25
|
+
rtc = self._tc
|
26
|
+
rval = self._value.nil? ? self._value : rtc.validate(self._value)
|
27
|
+
restc = rtc.resolved_tc
|
28
|
+
begin
|
29
|
+
if [TK_VALUE, TK_VALUE_BOX, TK_ABSTRACT_INTERFACE].include?(restc.kind) ||
|
30
|
+
(!rval.nil? && [TK_NULL,TK_ANY,TK_BOOLEAN,TK_SHORT,TK_LONG,TK_USHORT,
|
31
|
+
TK_WCHAR,TK_ULONG,TK_LONGLONG,TK_ULONGLONG,TK_OCTET,
|
32
|
+
TK_FLOAT,TK_DOUBLE,TK_LONGDOUBLE,TK_CHAR,TK_STRING,TK_WSTRING,
|
33
|
+
TK_VALUE, TK_VALUE_BOX,TK_TYPECODE,TK_OBJREF,TK_PRINCIPAL].include?(restc.kind))
|
34
|
+
jorb ||= CORBA::ORB._orb
|
35
|
+
jany ||= jorb.create_any()
|
36
|
+
case restc.kind
|
37
|
+
when TK_NULL
|
38
|
+
# leave any as is
|
39
|
+
when TK_ANY
|
40
|
+
jany.insert_any(rval.to_java(jorb))
|
41
|
+
when TK_BOOLEAN
|
42
|
+
jany.insert_boolean(rval)
|
43
|
+
when TK_SHORT
|
44
|
+
jany.insert_short(rval)
|
45
|
+
when TK_LONG
|
46
|
+
jany.insert_long(rval)
|
47
|
+
when TK_USHORT
|
48
|
+
jany.insert_ushort([rval].pack('S').unpack('s').first)
|
49
|
+
when TK_WCHAR
|
50
|
+
jany.insert_wchar(rval)
|
51
|
+
when TK_ULONG
|
52
|
+
jany.insert_ulong([rval].pack('L').unpack('l').first)
|
53
|
+
when TK_LONGLONG
|
54
|
+
jany.insert_longlong(rval)
|
55
|
+
when TK_ULONGLONG
|
56
|
+
jany.insert_ulonglong([rval].pack('Q').unpack('q').first)
|
57
|
+
when TK_OCTET
|
58
|
+
jany.insert_octet([rval].pack('C').unpack('c').first)
|
59
|
+
when TK_FLOAT
|
60
|
+
jany.insert_float(rval)
|
61
|
+
when TK_DOUBLE
|
62
|
+
jany.insert_double(rval)
|
63
|
+
when TK_LONGDOUBLE
|
64
|
+
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
65
|
+
when TK_FIXED
|
66
|
+
jany.insert_fixed(java.math.BigDecimal.new(rval.to_s))
|
67
|
+
when TK_CHAR
|
68
|
+
jany.insert_char(rval[0])
|
69
|
+
when TK_STRING
|
70
|
+
jany.insert_string(rval)
|
71
|
+
when TK_WSTRING
|
72
|
+
jany.insert_wstring(rval.inject('') {|s,b| s << b.chr})
|
73
|
+
when TK_VALUE
|
74
|
+
jany.insert_Value(rval, rtc.tc_)
|
75
|
+
when TK_VALUE_BOX
|
76
|
+
rtc.get_type::Factory._check_factory(jorb) # make sure valuebox factory has been registered
|
77
|
+
rval = rtc.get_type.new(rval) unless rval.nil? || rval.is_a?(CORBA::Portable::BoxedValueBase)
|
78
|
+
jany.insert_Value(rval, rtc.tc_)
|
79
|
+
when TK_TYPECODE
|
80
|
+
jany.insert_TypeCode(rtc.tc_)
|
81
|
+
when TK_OBJREF
|
82
|
+
jany.insert_Object(rval.objref_)
|
83
|
+
when TK_ABSTRACT_INTERFACE
|
84
|
+
if rval.is_a?(CORBA::Object)
|
85
|
+
# since we know what we're doing use this convenience method provided
|
86
|
+
# by JacORB so we only make a shallow copy of the object ref
|
87
|
+
# insert_Object() will throw an exception because the typecode is not
|
88
|
+
# an objref tc but rather an abstract interface tc
|
89
|
+
if CORBA::Native::Jacorb::MAJOR_VERSION < 3
|
90
|
+
jany.insert_object(rtc.tc_, rval.objref_)
|
91
|
+
else
|
92
|
+
jany.insert(rtc.tc_, rval.objref_)
|
93
|
+
end
|
94
|
+
else
|
95
|
+
jany.insert_Value(rval, rtc.tc_)
|
96
|
+
end
|
97
|
+
when TK_PRINCIPAL
|
98
|
+
raise CORBA::NO_IMPLEMENT.new('Principal not supported',0,CORBA::COMPLETED_NO)
|
99
|
+
## TODO: TK_NATIVE
|
100
|
+
else
|
101
|
+
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
102
|
+
end
|
103
|
+
return jany
|
104
|
+
else
|
105
|
+
dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
|
106
|
+
(jorb || CORBA::ORB._orb).resolve_initial_references("DynAnyFactory"))
|
107
|
+
jdynany = dynFactory.create_dyn_any_from_type_code(rtc.tc_)
|
108
|
+
begin
|
109
|
+
unless rval.nil?
|
110
|
+
restc = rtc.resolved_tc
|
111
|
+
case restc.kind
|
112
|
+
when TK_ENUM
|
113
|
+
jdynany.set_as_ulong(rval)
|
114
|
+
when TK_ARRAY
|
115
|
+
jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
|
116
|
+
rval.each_with_index {|e,i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
|
117
|
+
jdynany.set_elements(jelems)
|
118
|
+
when TK_SEQUENCE
|
119
|
+
jelems = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Any.java_class, rval.size)
|
120
|
+
rval.each_with_index {|e,i| jelems[i] = Any.to_any(e, restc.content_type).to_java(jorb) }
|
121
|
+
jdynany.set_elements(jelems)
|
122
|
+
when TK_STRUCT, TK_EXCEPT
|
123
|
+
jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::Dynamic::NameValuePair.java_class, restc.members.size)
|
124
|
+
rtc.members.each_with_index {|(mn, mt),i| jmembers[i] = CORBA::Native::Dynamic::NameValuePair.new(mn, Any.to_any(rval.__send__(mn.intern), mt).to_java(jorb)) }
|
125
|
+
jdynany.set_members(jmembers)
|
126
|
+
when TK_UNION
|
127
|
+
if rval._is_at_default?
|
128
|
+
jdynany.set_to_default_member
|
129
|
+
elsif rval._disc.nil?
|
130
|
+
jdynany.set_to_no_active_member
|
131
|
+
else
|
132
|
+
jdynany.set_discriminator(dynFactory.create_dyn_any(Any.to_any(rval._disc, restc.discriminator_type).to_java(jorb)))
|
133
|
+
end
|
134
|
+
unless rval._disc.nil? || rval._value.nil?
|
135
|
+
jdynany.member.from_any(Any.to_any(rval._value, rval._value_tc).to_java(jorb))
|
136
|
+
end
|
137
|
+
else
|
138
|
+
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
if jany.nil?
|
142
|
+
jany = jdynany.to_any
|
143
|
+
else
|
144
|
+
jany.read_value(jdynany.to_any.create_input_stream(), rtc.tc_)
|
145
|
+
end
|
146
|
+
ensure
|
147
|
+
jdynany.destroy
|
148
|
+
end
|
149
|
+
return jany
|
150
|
+
end
|
151
|
+
rescue ::NativeException
|
152
|
+
CORBA::Exception.native2r($!)
|
153
|
+
end
|
154
|
+
end # to_java
|
155
|
+
|
156
|
+
def Any.from_java(jany, jorb=nil, rtc=nil)
|
157
|
+
rtc ||= CORBA::TypeCode.from_native(jany.type)
|
158
|
+
rval = nil
|
159
|
+
begin
|
160
|
+
if [TK_NULL,TK_VOID,TK_ANY,TK_BOOLEAN,TK_SHORT,TK_LONG,TK_USHORT,
|
161
|
+
TK_WCHAR,TK_ULONG,TK_LONGLONG,TK_ULONGLONG,TK_OCTET,
|
162
|
+
TK_FLOAT,TK_DOUBLE,TK_LONGDOUBLE,TK_CHAR,TK_STRING,TK_WSTRING,
|
163
|
+
TK_VALUE, TK_VALUE_BOX,TK_TYPECODE,TK_OBJREF,
|
164
|
+
TK_ABSTRACT_INTERFACE,TK_PRINCIPAL].include?(rtc.resolved_tc.kind)
|
165
|
+
case rtc.resolved_tc.kind
|
166
|
+
when TK_NULL, TK_VOID
|
167
|
+
# leave as is
|
168
|
+
when TK_ANY
|
169
|
+
rval = Any.from_java(jany.extract_any(), jorb)
|
170
|
+
when TK_BOOLEAN
|
171
|
+
rval = jany.extract_boolean()
|
172
|
+
when TK_SHORT
|
173
|
+
rval = jany.extract_short()
|
174
|
+
when TK_LONG
|
175
|
+
rval = jany.extract_long()
|
176
|
+
when TK_USHORT
|
177
|
+
rval = [jany.extract_ushort()].pack('s').unpack('S').first
|
178
|
+
when TK_WCHAR
|
179
|
+
rval = jany.extract_wchar()
|
180
|
+
when TK_ULONG
|
181
|
+
rval = [jany.extract_ulong()].pack('l').unpack('L').first
|
182
|
+
when TK_LONGLONG
|
183
|
+
rval = jany.extract_longlong()
|
184
|
+
when TK_ULONGLONG
|
185
|
+
rval = [jany.extract_ulonglong()].pack('q').unpack('Q').first
|
186
|
+
when TK_OCTET
|
187
|
+
rval = [jany.extract_octet()].pack('c').unpack('C').first
|
188
|
+
when TK_FLOAT
|
189
|
+
rval = jany.extract_float()
|
190
|
+
when TK_DOUBLE
|
191
|
+
rval = jany.extract_double()
|
192
|
+
when TK_LONGDOUBLE
|
193
|
+
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
194
|
+
when TK_FIXED
|
195
|
+
rval = BigDecimal.new(jany.extract_fixed().toString())
|
196
|
+
when TK_CHAR
|
197
|
+
rval = jany.extract_char().chr
|
198
|
+
when TK_STRING
|
199
|
+
rval = jany.extract_string()
|
200
|
+
when TK_WSTRING
|
201
|
+
rval = jany.extract_wstring()
|
202
|
+
when TK_VALUE
|
203
|
+
rval = jany.extract_Value()
|
204
|
+
when TK_VALUE_BOX
|
205
|
+
rtc.get_type::Factory._check_factory(jorb || CORBA::ORB._orb) # make sure valuebox factory has been registered
|
206
|
+
rval = jany.extract_Value()
|
207
|
+
rval = rval.value unless rval.nil?
|
208
|
+
when TK_TYPECODE
|
209
|
+
rval = CORBA::TypeCode.from_native(jany.extract_TypeCode())
|
210
|
+
when TK_OBJREF
|
211
|
+
rval = CORBA::Object._wrap_native(jany.extract_Object())
|
212
|
+
rval = rtc.get_type._narrow(rval) if rval
|
213
|
+
when TK_ABSTRACT_INTERFACE
|
214
|
+
jobj = jany.create_input_stream().read_abstract_interface()
|
215
|
+
rval = if jobj.is_a?(CORBA::Native::Object)
|
216
|
+
rtc.get_type._narrow(CORBA::Object._wrap_native(jobj))
|
217
|
+
else
|
218
|
+
jobj
|
219
|
+
end
|
220
|
+
when TK_PRINCIPAL
|
221
|
+
raise CORBA::NO_IMPLEMENT.new('Principal not supported',0,CORBA::COMPLETED_NO)
|
222
|
+
## TODO: TK_NATIVE
|
223
|
+
else
|
224
|
+
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
225
|
+
end
|
226
|
+
else
|
227
|
+
dynFactory = CORBA::Native::Dynamic::DynAnyFactoryHelper.narrow(
|
228
|
+
(jorb || CORBA::ORB._orb).resolve_initial_references("DynAnyFactory"))
|
229
|
+
jdynany = dynFactory.create_dyn_any(jany)
|
230
|
+
begin
|
231
|
+
restc = rtc.resolved_tc
|
232
|
+
case restc.kind
|
233
|
+
when TK_ENUM
|
234
|
+
rval = jdynany.get_as_ulong()
|
235
|
+
when TK_ARRAY
|
236
|
+
rval = rtc.get_type.new
|
237
|
+
jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
|
238
|
+
when TK_SEQUENCE
|
239
|
+
rval = rtc.get_type.new
|
240
|
+
jdynany.get_elements().each {|e| rval << Any.from_java(e, jorb, restc.content_type) }
|
241
|
+
when TK_STRUCT, TK_EXCEPT
|
242
|
+
rval = rtc.get_type.new
|
243
|
+
jdynany.get_members().each_with_index {|nvp,i| rval.__send__("#{nvp.id}=".intern, Any.from_java(nvp.value, jorb, restc.member_type(i))) }
|
244
|
+
when TK_UNION
|
245
|
+
rval = rtc.get_type.new
|
246
|
+
if jdynany.get_discriminator().type().kind().value() == CORBA::TK_OCTET
|
247
|
+
rdisc = jdynany.get_discriminator().get_octet()
|
248
|
+
# Octet 0 designates default member
|
249
|
+
rdisc = rdisc == 0 ? :default : rdisc
|
250
|
+
else
|
251
|
+
rdisc = Any.from_java(jdynany.get_discriminator().to_any(), jorb, restc.discriminator_type)
|
252
|
+
end
|
253
|
+
rval.instance_variable_set('@discriminator', rdisc)
|
254
|
+
unless jdynany.has_no_active_member
|
255
|
+
minx = rtc.label_index(rdisc)
|
256
|
+
rval.instance_variable_set('@value', Any.from_java(jdynany.member.to_any, jorb, restc.member_type(minx)))
|
257
|
+
end
|
258
|
+
else
|
259
|
+
raise CORBA::MARSHAL.new("unknown kind [#{rtc.kind}]",0,CORBA::COMPLETED_NO)
|
260
|
+
end
|
261
|
+
ensure
|
262
|
+
jdynany.destroy
|
263
|
+
end
|
264
|
+
end
|
265
|
+
rescue ::NativeException
|
266
|
+
CORBA::Exception.native2r($!)
|
267
|
+
end
|
268
|
+
return rval
|
269
|
+
end # from_java
|
270
|
+
|
271
|
+
end # Any
|
272
|
+
end # CORBA
|
273
|
+
end # R2CORBA
|