r2corba 1.4.1
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/ridlc +11 -0
- data/bin/rins +7 -0
- data/ext/ext.mwc +6 -0
- data/ext/extload/extload.c +60 -0
- data/ext/libr2tao/any.cpp +1543 -0
- data/ext/libr2tao/exception.cpp +202 -0
- data/ext/libr2tao/exception.h +104 -0
- data/ext/libr2tao/longdouble.cpp +173 -0
- data/ext/libr2tao/longdouble.h +31 -0
- data/ext/libr2tao/object.cpp +1150 -0
- data/ext/libr2tao/object.h +38 -0
- data/ext/libr2tao/orb.cpp +1029 -0
- data/ext/libr2tao/orb.h +36 -0
- data/ext/libr2tao/r2tao_export.h +45 -0
- data/ext/libr2tao/r2tao_ext.h +38 -0
- data/ext/libr2tao/required.cpp +463 -0
- data/ext/libr2tao/required.h +187 -0
- data/ext/libr2tao/typecode.cpp +888 -0
- data/ext/libr2tao/typecode.h +45 -0
- data/ext/libr2tao/values.cpp +2938 -0
- data/ext/libr2tao/values.h +396 -0
- data/ext/librpoa/iortable.cpp +250 -0
- data/ext/librpoa/poa.cpp +1076 -0
- data/ext/librpoa/poa.h +24 -0
- data/ext/librpoa/rpoa_export.h +44 -0
- data/ext/librpoa/servant.cpp +1338 -0
- data/ext/librpoa/servant.h +116 -0
- data/ext/librpoa/srvreq_fix.cpp +283 -0
- data/ext/librpoa/srvreq_fix.h +149 -0
- data/ext/librpol/policies.cpp +763 -0
- data/ext/librpol/policies.h +15 -0
- data/ext/librpol/rpol_export.h +44 -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/IDL.rb +21 -0
- data/lib/corba/idl/IORTable.pidl +62 -0
- data/lib/corba/idl/TAO_Ext.pidl +46 -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/require.rb +16 -0
- data/lib/ridlbe/ruby/walker.rb +1582 -0
- data/mkrf_conf_srcgem.rb +186 -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.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/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/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/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.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.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.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.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.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.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.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/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.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.rb +119 -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.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.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.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.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.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.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.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.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.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.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.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.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.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 +334 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
# exception.cpp - R2TAO CORBA exception 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
|
+
|
|
14
|
+
#include "required.h"
|
|
15
|
+
#include "exception.h"
|
|
16
|
+
#include "typecode.h"
|
|
17
|
+
#include "tao/corba.h"
|
|
18
|
+
#include "tao/AnyTypeCode/Any.h"
|
|
19
|
+
#include "tao/AnyTypeCode/Any_Unknown_IDL_Type.h"
|
|
20
|
+
|
|
21
|
+
VALUE r2tao_cError = 0;
|
|
22
|
+
R2TAO_EXPORT VALUE r2tao_cSystemException;
|
|
23
|
+
R2TAO_EXPORT VALUE r2tao_cUserException;
|
|
24
|
+
VALUE r2tao_cUNKNOWN;
|
|
25
|
+
VALUE r2tao_cBAD_PARAM;
|
|
26
|
+
VALUE r2tao_cNO_MEMORY;
|
|
27
|
+
VALUE r2tao_cIMP_LIMIT;
|
|
28
|
+
VALUE r2tao_cCOMM_FAILURE;
|
|
29
|
+
VALUE r2tao_cINV_OBJREF;
|
|
30
|
+
VALUE r2tao_cNO_PERMISSION;
|
|
31
|
+
VALUE r2tao_cINTERNAL;
|
|
32
|
+
VALUE r2tao_cMARSHAL;
|
|
33
|
+
VALUE r2tao_cINITIALIZE;
|
|
34
|
+
VALUE r2tao_cNO_IMPLEMENT;
|
|
35
|
+
VALUE r2tao_cBAD_TYPECODE;
|
|
36
|
+
VALUE r2tao_cBAD_OPERATION;
|
|
37
|
+
VALUE r2tao_cNO_RESOURCES;
|
|
38
|
+
VALUE r2tao_cNO_RESPONSE;
|
|
39
|
+
VALUE r2tao_cPERSIST_STORE;
|
|
40
|
+
VALUE r2tao_cBAD_INV_ORDER;
|
|
41
|
+
VALUE r2tao_cTRANSIENT;
|
|
42
|
+
VALUE r2tao_cFREE_MEM;
|
|
43
|
+
VALUE r2tao_cINV_IDENT;
|
|
44
|
+
VALUE r2tao_cINV_FLAG;
|
|
45
|
+
VALUE r2tao_cINTF_REPOS;
|
|
46
|
+
VALUE r2tao_cBAD_CONTEXT;
|
|
47
|
+
VALUE r2tao_cOBJ_ADAPTER;
|
|
48
|
+
VALUE r2tao_cDATA_CONVERSION;
|
|
49
|
+
VALUE r2tao_cOBJECT_NOT_EXIST;
|
|
50
|
+
VALUE r2tao_cTRANSACTION_UNAVAILABLE;
|
|
51
|
+
VALUE r2tao_cTRANSACTION_MODE;
|
|
52
|
+
VALUE r2tao_cTRANSACTION_REQUIRED;
|
|
53
|
+
VALUE r2tao_cTRANSACTION_ROLLEDBACK;
|
|
54
|
+
VALUE r2tao_cINVALID_TRANSACTION;
|
|
55
|
+
VALUE r2tao_cINV_POLICY;
|
|
56
|
+
VALUE r2tao_cCODESET_INCOMPATIBLE;
|
|
57
|
+
VALUE r2tao_cREBIND;
|
|
58
|
+
VALUE r2tao_cTIMEOUT;
|
|
59
|
+
VALUE r2tao_cBAD_QOS;
|
|
60
|
+
VALUE r2tao_cINVALID_ACTIVITY;
|
|
61
|
+
VALUE r2tao_cACTIVITY_COMPLETED;
|
|
62
|
+
VALUE r2tao_cACTIVITY_REQUIRED;
|
|
63
|
+
VALUE r2tao_cTHREAD_CANCELLED;
|
|
64
|
+
|
|
65
|
+
static void sysexc_raise(const CORBA::SystemException& sex, char *_reason = 0)
|
|
66
|
+
{
|
|
67
|
+
static ID _raise_ID = rb_intern ("_raise");
|
|
68
|
+
|
|
69
|
+
VALUE id, reason, minor, completed;
|
|
70
|
+
|
|
71
|
+
id = rb_str_new2 (sex._rep_id ());
|
|
72
|
+
minor = ULONG2NUM (sex.minor ());
|
|
73
|
+
completed = INT2NUM ((int)sex.completed ());
|
|
74
|
+
reason = rb_str_new2 (_reason ? _reason : sex._info ().c_str ());
|
|
75
|
+
|
|
76
|
+
rb_funcall (r2tao_cSystemException,
|
|
77
|
+
_raise_ID, 4, id, reason, minor, completed);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
R2TAO_EXPORT void r2tao_sysex(const CORBA::SystemException& ex)
|
|
81
|
+
{
|
|
82
|
+
sysexc_raise(ex);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
R2TAO_EXPORT void r2tao_unknown_userex(const CORBA::UnknownUserException& ex)
|
|
86
|
+
{
|
|
87
|
+
VALUE exc = r2tao_Any2Ruby (const_cast<CORBA::UnknownUserException&> (ex).exception (),
|
|
88
|
+
ex._tao_type (), Qnil, Qnil);
|
|
89
|
+
rb_exc_raise(exc);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
R2TAO_EXPORT void r2tao_userex(const CORBA::UserException& ex)
|
|
93
|
+
{
|
|
94
|
+
try
|
|
95
|
+
{
|
|
96
|
+
// only way to convert these exceptions to Ruby
|
|
97
|
+
// is to marshal them, encapsulate in an any and
|
|
98
|
+
// from there demarshal them into a Ruby version of
|
|
99
|
+
// the exception
|
|
100
|
+
// NOTE: this does not work on UserExceptions from TAO
|
|
101
|
+
// core pseudo objects (like POA) since no marshaling
|
|
102
|
+
// code is generated for these.
|
|
103
|
+
TAO_OutputCDR outstrm;
|
|
104
|
+
ex._tao_encode (outstrm);
|
|
105
|
+
TAO_InputCDR instrm (outstrm);
|
|
106
|
+
TAO::Unknown_IDL_Type *any_impl = 0;
|
|
107
|
+
ACE_NEW_NORETURN (any_impl,
|
|
108
|
+
TAO::Unknown_IDL_Type (ex._tao_type ()));
|
|
109
|
+
if (any_impl == 0)
|
|
110
|
+
{
|
|
111
|
+
X_CORBA (NO_MEMORY);
|
|
112
|
+
}
|
|
113
|
+
any_impl->_tao_decode (instrm);
|
|
114
|
+
CORBA::Any any_;
|
|
115
|
+
any_.replace (any_impl);
|
|
116
|
+
|
|
117
|
+
VALUE exc = r2tao_Any2Ruby(any_, ex._tao_type (), Qnil, Qnil);
|
|
118
|
+
rb_exc_raise(exc);
|
|
119
|
+
}
|
|
120
|
+
// marshaling/unmarshaling the exceptions might raise (system) exceptions
|
|
121
|
+
catch (const CORBA::SystemException& ex)
|
|
122
|
+
{
|
|
123
|
+
sysexc_raise(ex);
|
|
124
|
+
}
|
|
125
|
+
catch (const CORBA::Exception& ex)
|
|
126
|
+
{
|
|
127
|
+
r2tao_corbaex(ex);
|
|
128
|
+
}
|
|
129
|
+
catch (...)
|
|
130
|
+
{
|
|
131
|
+
r2tao_anyex();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
R2TAO_EXPORT void r2tao_corbaex(const CORBA::Exception& ex)
|
|
136
|
+
{
|
|
137
|
+
VALUE exc = rb_funcall(r2tao_cError, rb_intern("new"), 1,
|
|
138
|
+
rb_str_new2 (ex._rep_id ()));
|
|
139
|
+
rb_exc_raise(exc);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
R2TAO_EXPORT void r2tao_anyex()
|
|
143
|
+
{
|
|
144
|
+
VALUE exc = rb_funcall(r2tao_cError, rb_intern("new"), 1,
|
|
145
|
+
rb_str_new2 ("Unknown exception raised"));
|
|
146
|
+
rb_exc_raise(exc);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
void r2tao_Init_Exception()
|
|
151
|
+
{
|
|
152
|
+
if (r2tao_cError) return;
|
|
153
|
+
|
|
154
|
+
r2tao_cError = rb_const_get (r2tao_nsCORBA, rb_intern ("InternalError"));
|
|
155
|
+
|
|
156
|
+
#define GET_EXCEPTION_CLASS(NAME)\
|
|
157
|
+
r2tao_c ## NAME = rb_const_get(r2tao_nsCORBA, rb_intern(#NAME));
|
|
158
|
+
|
|
159
|
+
GET_EXCEPTION_CLASS(SystemException);
|
|
160
|
+
GET_EXCEPTION_CLASS(UserException);
|
|
161
|
+
GET_EXCEPTION_CLASS(UNKNOWN);
|
|
162
|
+
GET_EXCEPTION_CLASS(BAD_PARAM);
|
|
163
|
+
GET_EXCEPTION_CLASS(NO_MEMORY);
|
|
164
|
+
GET_EXCEPTION_CLASS(IMP_LIMIT);
|
|
165
|
+
GET_EXCEPTION_CLASS(COMM_FAILURE);
|
|
166
|
+
GET_EXCEPTION_CLASS(INV_OBJREF);
|
|
167
|
+
GET_EXCEPTION_CLASS(NO_PERMISSION);
|
|
168
|
+
GET_EXCEPTION_CLASS(INTERNAL);
|
|
169
|
+
GET_EXCEPTION_CLASS(MARSHAL);
|
|
170
|
+
GET_EXCEPTION_CLASS(INITIALIZE);
|
|
171
|
+
GET_EXCEPTION_CLASS(NO_IMPLEMENT);
|
|
172
|
+
GET_EXCEPTION_CLASS(BAD_TYPECODE);
|
|
173
|
+
GET_EXCEPTION_CLASS(BAD_OPERATION);
|
|
174
|
+
GET_EXCEPTION_CLASS(NO_RESOURCES);
|
|
175
|
+
GET_EXCEPTION_CLASS(NO_RESPONSE);
|
|
176
|
+
GET_EXCEPTION_CLASS(PERSIST_STORE);
|
|
177
|
+
GET_EXCEPTION_CLASS(BAD_INV_ORDER);
|
|
178
|
+
GET_EXCEPTION_CLASS(TRANSIENT);
|
|
179
|
+
GET_EXCEPTION_CLASS(FREE_MEM);
|
|
180
|
+
GET_EXCEPTION_CLASS(INV_IDENT);
|
|
181
|
+
GET_EXCEPTION_CLASS(INV_FLAG);
|
|
182
|
+
GET_EXCEPTION_CLASS(INTF_REPOS);
|
|
183
|
+
GET_EXCEPTION_CLASS(BAD_CONTEXT);
|
|
184
|
+
GET_EXCEPTION_CLASS(OBJ_ADAPTER);
|
|
185
|
+
GET_EXCEPTION_CLASS(DATA_CONVERSION);
|
|
186
|
+
GET_EXCEPTION_CLASS(OBJECT_NOT_EXIST);
|
|
187
|
+
GET_EXCEPTION_CLASS(TRANSACTION_UNAVAILABLE);
|
|
188
|
+
GET_EXCEPTION_CLASS(TRANSACTION_MODE);
|
|
189
|
+
GET_EXCEPTION_CLASS(TRANSACTION_REQUIRED);
|
|
190
|
+
GET_EXCEPTION_CLASS(TRANSACTION_ROLLEDBACK);
|
|
191
|
+
GET_EXCEPTION_CLASS(INVALID_TRANSACTION);
|
|
192
|
+
GET_EXCEPTION_CLASS(INV_POLICY);
|
|
193
|
+
GET_EXCEPTION_CLASS(CODESET_INCOMPATIBLE);
|
|
194
|
+
GET_EXCEPTION_CLASS(REBIND);
|
|
195
|
+
GET_EXCEPTION_CLASS(TIMEOUT);
|
|
196
|
+
GET_EXCEPTION_CLASS(BAD_QOS);
|
|
197
|
+
GET_EXCEPTION_CLASS(INVALID_ACTIVITY);
|
|
198
|
+
GET_EXCEPTION_CLASS(ACTIVITY_COMPLETED);
|
|
199
|
+
GET_EXCEPTION_CLASS(ACTIVITY_REQUIRED);
|
|
200
|
+
GET_EXCEPTION_CLASS(THREAD_CANCELLED);
|
|
201
|
+
#undef GET_EXCEPTION_CLASS
|
|
202
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
# exception.h - R2TAO CORBA exception 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
|
+
|
|
14
|
+
#ifndef __R2TAO_EXCEPTION_H
|
|
15
|
+
#define __R2TAO_EXCEPTION_H
|
|
16
|
+
|
|
17
|
+
#include "required.h"
|
|
18
|
+
#include <tao/SystemException.h>
|
|
19
|
+
#include <tao/UserException.h>
|
|
20
|
+
#include "tao/DynamicInterface/Unknown_User_Exception.h"
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* see 19.16 "Mapping for Exception Types" and 19.22 "Handling Exceptions".
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#define R2TAO_TRY try
|
|
28
|
+
#define R2TAO_CATCH \
|
|
29
|
+
catch (const CORBA::SystemException& sex) \
|
|
30
|
+
{ \
|
|
31
|
+
r2tao_sysex(sex); \
|
|
32
|
+
} \
|
|
33
|
+
catch (CORBA::UnknownUserException& uex) \
|
|
34
|
+
{ \
|
|
35
|
+
r2tao_unknown_userex (uex); \
|
|
36
|
+
} \
|
|
37
|
+
catch (const CORBA::UserException& uex) \
|
|
38
|
+
{ \
|
|
39
|
+
r2tao_userex (uex); \
|
|
40
|
+
} \
|
|
41
|
+
catch (const CORBA::Exception& cex) \
|
|
42
|
+
{ \
|
|
43
|
+
r2tao_corbaex (cex); \
|
|
44
|
+
} \
|
|
45
|
+
catch (...) \
|
|
46
|
+
{ \
|
|
47
|
+
r2tao_anyex (); \
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* check environment argument and raise if need.*/
|
|
51
|
+
extern R2TAO_EXPORT void r2tao_sysex(const CORBA::SystemException& ex);
|
|
52
|
+
extern R2TAO_EXPORT void r2tao_unknown_userex(const CORBA::UnknownUserException& ex);
|
|
53
|
+
extern R2TAO_EXPORT void r2tao_userex(const CORBA::UserException& ex);
|
|
54
|
+
extern R2TAO_EXPORT void r2tao_corbaex(const CORBA::Exception& ex);
|
|
55
|
+
extern R2TAO_EXPORT void r2tao_anyex();
|
|
56
|
+
|
|
57
|
+
extern VALUE r2tao_cError;
|
|
58
|
+
extern R2TAO_EXPORT VALUE r2tao_cSystemException;
|
|
59
|
+
extern R2TAO_EXPORT VALUE r2tao_cUserException;
|
|
60
|
+
extern R2TAO_EXPORT VALUE r2tao_cUNKNOWN;
|
|
61
|
+
extern R2TAO_EXPORT VALUE r2tao_cBAD_PARAM;
|
|
62
|
+
extern R2TAO_EXPORT VALUE r2tao_cNO_MEMORY;
|
|
63
|
+
extern R2TAO_EXPORT VALUE r2tao_cIMP_LIMIT;
|
|
64
|
+
extern R2TAO_EXPORT VALUE r2tao_cCOMM_FAILURE;
|
|
65
|
+
extern R2TAO_EXPORT VALUE r2tao_cINV_OBJREF;
|
|
66
|
+
extern R2TAO_EXPORT VALUE r2tao_cNO_PERMISSION;
|
|
67
|
+
extern R2TAO_EXPORT VALUE r2tao_cINTERNAL;
|
|
68
|
+
extern R2TAO_EXPORT VALUE r2tao_cMARSHAL;
|
|
69
|
+
extern R2TAO_EXPORT VALUE r2tao_cINITIALIZE;
|
|
70
|
+
extern R2TAO_EXPORT VALUE r2tao_cNO_IMPLEMENT;
|
|
71
|
+
extern R2TAO_EXPORT VALUE r2tao_cBAD_TYPECODE;
|
|
72
|
+
extern R2TAO_EXPORT VALUE r2tao_cBAD_OPERATION;
|
|
73
|
+
extern R2TAO_EXPORT VALUE r2tao_cNO_RESOURCES;
|
|
74
|
+
extern R2TAO_EXPORT VALUE r2tao_cNO_RESPONSE;
|
|
75
|
+
extern R2TAO_EXPORT VALUE r2tao_cPERSIST_STORE;
|
|
76
|
+
extern R2TAO_EXPORT VALUE r2tao_cBAD_INV_ORDER;
|
|
77
|
+
extern R2TAO_EXPORT VALUE r2tao_cTRANSIENT;
|
|
78
|
+
extern R2TAO_EXPORT VALUE r2tao_cFREE_MEM;
|
|
79
|
+
extern R2TAO_EXPORT VALUE r2tao_cINV_IDENT;
|
|
80
|
+
extern R2TAO_EXPORT VALUE r2tao_cINV_FLAG;
|
|
81
|
+
extern R2TAO_EXPORT VALUE r2tao_cINTF_REPOS;
|
|
82
|
+
extern R2TAO_EXPORT VALUE r2tao_cBAD_CONTEXT;
|
|
83
|
+
extern R2TAO_EXPORT VALUE r2tao_cOBJ_ADAPTER;
|
|
84
|
+
extern R2TAO_EXPORT VALUE r2tao_cDATA_CONVERSION;
|
|
85
|
+
extern R2TAO_EXPORT VALUE r2tao_cOBJECT_NOT_EXIST;
|
|
86
|
+
extern R2TAO_EXPORT VALUE r2tao_cTRANSACTION_REQUIRED;
|
|
87
|
+
extern R2TAO_EXPORT VALUE r2tao_cTRANSACTION_ROLLEDBACK;
|
|
88
|
+
extern R2TAO_EXPORT VALUE r2tao_cINVALID_TRANSACTION;
|
|
89
|
+
extern R2TAO_EXPORT VALUE r2tao_cINV_POLICY;
|
|
90
|
+
extern R2TAO_EXPORT VALUE r2tao_cCODESET_INCOMPATIBLE;
|
|
91
|
+
|
|
92
|
+
extern void r2tao_Init_Exception();
|
|
93
|
+
|
|
94
|
+
#define X_CORBA(ex) \
|
|
95
|
+
rb_raise (r2tao_c ## ex, " ")
|
|
96
|
+
|
|
97
|
+
#define X_CORBA_(ex,msg) \
|
|
98
|
+
rb_raise (r2tao_c ## ex, msg)
|
|
99
|
+
|
|
100
|
+
#define CHECK_RTYPE(v,t)\
|
|
101
|
+
if (rb_type ((v)) != (t)) \
|
|
102
|
+
{ throw CORBA::BAD_PARAM(0, CORBA::COMPLETED_NO); }
|
|
103
|
+
|
|
104
|
+
#endif
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
# longdouble.cpp - R2TAO CORBA LongDouble 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
|
+
|
|
14
|
+
#include "required.h"
|
|
15
|
+
#include "exception.h"
|
|
16
|
+
#include "longdouble.h"
|
|
17
|
+
|
|
18
|
+
#include <ace/OS_NS_stdio.h>
|
|
19
|
+
|
|
20
|
+
static VALUE r2tao_cLongDouble;
|
|
21
|
+
|
|
22
|
+
static VALUE rb_cBigDecimal;
|
|
23
|
+
|
|
24
|
+
// CORBA LongDouble methods
|
|
25
|
+
static VALUE ld_alloc(VALUE klass);
|
|
26
|
+
static void ld_free(void* ptr);
|
|
27
|
+
|
|
28
|
+
static VALUE r2tao_LongDouble_initialize(int _argc, VALUE *_argv0, VALUE klass);
|
|
29
|
+
static VALUE r2tao_LongDouble_to_s(int _argc, VALUE *_argv, VALUE self);
|
|
30
|
+
static VALUE r2tao_LongDouble_to_f(VALUE self);
|
|
31
|
+
static VALUE r2tao_LongDouble_to_i(VALUE self);
|
|
32
|
+
static VALUE r2tao_LongDouble_size(VALUE self);
|
|
33
|
+
|
|
34
|
+
void r2tao_init_LongDouble()
|
|
35
|
+
{
|
|
36
|
+
VALUE k;
|
|
37
|
+
|
|
38
|
+
k = r2tao_cLongDouble =
|
|
39
|
+
rb_define_class_under (r2tao_nsCORBA, "LongDouble", rb_cObject);
|
|
40
|
+
rb_define_alloc_func (r2tao_cLongDouble, RUBY_ALLOC_FUNC (ld_alloc));
|
|
41
|
+
rb_define_method(k, "initialize", RUBY_METHOD_FUNC(r2tao_LongDouble_initialize), -1);
|
|
42
|
+
rb_define_method(k, "to_s", RUBY_METHOD_FUNC(r2tao_LongDouble_to_s), -1);
|
|
43
|
+
rb_define_method(k, "to_f", RUBY_METHOD_FUNC(r2tao_LongDouble_to_f), 0);
|
|
44
|
+
rb_define_method(k, "to_i", RUBY_METHOD_FUNC(r2tao_LongDouble_to_i), 0);
|
|
45
|
+
rb_define_singleton_method(k, "size", RUBY_METHOD_FUNC(r2tao_LongDouble_size), 0);
|
|
46
|
+
|
|
47
|
+
rb_require ("bigdecimal");
|
|
48
|
+
rb_cBigDecimal = rb_eval_string ("::BigDecimal");
|
|
49
|
+
}
|
|
50
|
+
//-------------------------------------------------------------------
|
|
51
|
+
// CORBA LongDouble methods
|
|
52
|
+
//
|
|
53
|
+
//===================================================================
|
|
54
|
+
|
|
55
|
+
static VALUE ld_alloc(VALUE klass)
|
|
56
|
+
{
|
|
57
|
+
VALUE obj;
|
|
58
|
+
|
|
59
|
+
ACE_CDR::LongDouble* ld = new ACE_CDR::LongDouble;
|
|
60
|
+
ACE_CDR_LONG_DOUBLE_ASSIGNMENT ((*ld), 0.0);
|
|
61
|
+
obj = Data_Wrap_Struct(klass, 0, ld_free, ld);
|
|
62
|
+
return obj;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static void ld_free(void* ptr)
|
|
66
|
+
{
|
|
67
|
+
if (ptr)
|
|
68
|
+
delete static_cast<ACE_CDR::LongDouble*> (ptr);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
VALUE r2tao_cld2rld(const NATIVE_LONGDOUBLE& _d)
|
|
72
|
+
{
|
|
73
|
+
VALUE _rd = Data_Wrap_Struct(r2tao_cLongDouble, 0, ld_free, new ACE_CDR::LongDouble);
|
|
74
|
+
SETCLD2RLD (_rd, _d);
|
|
75
|
+
return _rd;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
VALUE r2tao_LongDouble_initialize(int _argc, VALUE *_argv, VALUE self)
|
|
79
|
+
{
|
|
80
|
+
VALUE v0, v1 = Qnil;
|
|
81
|
+
rb_scan_args(_argc, _argv, "11", &v0, &v1);
|
|
82
|
+
|
|
83
|
+
if (rb_obj_is_kind_of(v0, rb_cFloat) == Qtrue)
|
|
84
|
+
{
|
|
85
|
+
SETCLD2RLD(self, NUM2DBL(v0));
|
|
86
|
+
return self;
|
|
87
|
+
}
|
|
88
|
+
else if (rb_obj_is_kind_of(v0, rb_cBigDecimal) == Qtrue)
|
|
89
|
+
{
|
|
90
|
+
if (v1 != Qnil)
|
|
91
|
+
{
|
|
92
|
+
v0 = rb_funcall (v0, rb_intern ("round"), 1, v1);
|
|
93
|
+
}
|
|
94
|
+
v0 = rb_funcall (v0, rb_intern ("to_s"), 0);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (rb_obj_is_kind_of(v0, rb_cString) == Qtrue)
|
|
98
|
+
{
|
|
99
|
+
char* endp = 0;
|
|
100
|
+
#if defined (NONNATIVE_LONGDOUBLE) && defined (ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE)
|
|
101
|
+
NATIVE_LONGDOUBLE _ld = ::strtod (RSTRING_PTR (v0), &endp);
|
|
102
|
+
#else
|
|
103
|
+
NATIVE_LONGDOUBLE _ld = ::strtold (RSTRING_PTR (v0), &endp);
|
|
104
|
+
#endif
|
|
105
|
+
|
|
106
|
+
if (errno == ERANGE)
|
|
107
|
+
rb_raise (rb_eRangeError, "floating point '%s' out-of-range", RSTRING_PTR (v0));
|
|
108
|
+
|
|
109
|
+
if (RSTRING_PTR (v0) == endp)
|
|
110
|
+
rb_raise (rb_eArgError, "floating point string '%s' invalid", RSTRING_PTR (v0));
|
|
111
|
+
|
|
112
|
+
SETCLD2RLD(self, _ld);
|
|
113
|
+
return self;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
rb_raise (rb_eTypeError, "wrong argument type %s (expected Float, String or BigDecimal)",
|
|
117
|
+
rb_class2name(CLASS_OF(v0)));
|
|
118
|
+
|
|
119
|
+
return Qnil;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// silence pesky warnings from MingW cocerning long double format specifier
|
|
123
|
+
#pragma GCC diagnostic push
|
|
124
|
+
#pragma GCC diagnostic ignored "-Wformat"
|
|
125
|
+
#pragma GCC diagnostic ignored "-Wformat-extra-args"
|
|
126
|
+
|
|
127
|
+
VALUE r2tao_LongDouble_to_s(int _argc, VALUE *_argv, VALUE self)
|
|
128
|
+
{
|
|
129
|
+
VALUE prec = Qnil;
|
|
130
|
+
rb_scan_args(_argc, _argv, "01", &prec);
|
|
131
|
+
|
|
132
|
+
int lprec = (prec == Qnil ? 0 : NUM2LONG (prec));
|
|
133
|
+
|
|
134
|
+
R2TAO_TRY
|
|
135
|
+
{
|
|
136
|
+
unsigned long len = (lprec < 512) ? 1024 : 2*lprec;
|
|
137
|
+
CORBA::String_var buf = CORBA::string_alloc (len);
|
|
138
|
+
#if defined (NONNATIVE_LONGDOUBLE) && defined (ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE)
|
|
139
|
+
if (prec == Qnil)
|
|
140
|
+
ACE_OS::snprintf ((char*)buf, len-1, "%f", RLD2CLD(self));
|
|
141
|
+
else
|
|
142
|
+
ACE_OS::snprintf ((char*)buf, len-1, "%.*f", lprec, RLD2CLD(self));
|
|
143
|
+
#else
|
|
144
|
+
if (prec == Qnil)
|
|
145
|
+
ACE_OS::snprintf ((char*)buf, len-1, "%Lf", RLD2CLD(self));
|
|
146
|
+
else
|
|
147
|
+
ACE_OS::snprintf ((char*)buf, len-1, "%.*Lf", lprec, RLD2CLD(self));
|
|
148
|
+
#endif
|
|
149
|
+
return rb_str_new2 ((char*)buf);
|
|
150
|
+
}
|
|
151
|
+
R2TAO_CATCH;
|
|
152
|
+
|
|
153
|
+
return Qnil;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
#pragma GCC diagnostic pop
|
|
157
|
+
|
|
158
|
+
VALUE r2tao_LongDouble_to_f(VALUE self)
|
|
159
|
+
{
|
|
160
|
+
return rb_float_new (RLD2CLD(self));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
VALUE r2tao_LongDouble_to_i(VALUE self)
|
|
164
|
+
{
|
|
165
|
+
unsigned long long l =
|
|
166
|
+
static_cast<unsigned long long> (RLD2CLD(self));
|
|
167
|
+
return ULL2NUM (l);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
VALUE r2tao_LongDouble_size(VALUE /*self*/)
|
|
171
|
+
{
|
|
172
|
+
return INT2FIX (sizeof (NATIVE_LONGDOUBLE) * CHAR_BIT);
|
|
173
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
# longdouble.h - R2TAO CORBA LongDouble 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
|
+
|
|
14
|
+
#if defined (NONNATIVE_LONGDOUBLE)
|
|
15
|
+
#define NATIVE_LONGDOUBLE ACE_CDR::LongDouble::NativeImpl
|
|
16
|
+
#else
|
|
17
|
+
#define NATIVE_LONGDOUBLE long double
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
VALUE r2tao_cld2rld(const NATIVE_LONGDOUBLE& _d);
|
|
21
|
+
|
|
22
|
+
#define RLD2CLD(_x) \
|
|
23
|
+
((NATIVE_LONGDOUBLE)*static_cast<ACE_CDR::LongDouble*> (DATA_PTR (_x)))
|
|
24
|
+
|
|
25
|
+
#define SETCLD2RLD(_x, _d) \
|
|
26
|
+
ACE_CDR_LONG_DOUBLE_ASSIGNMENT ((*static_cast<ACE_CDR::LongDouble*> (DATA_PTR (_x))), _d)
|
|
27
|
+
|
|
28
|
+
#define CLD2RLD(_d) \
|
|
29
|
+
r2tao_cld2rld(_d)
|
|
30
|
+
|
|
31
|
+
|