r2corba 1.5.4 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +3 -2
- data/ext/libr2tao/any.cpp +11 -10
- data/ext/libr2tao/exception.cpp +6 -8
- data/ext/libr2tao/exception.h +1 -1
- data/ext/libr2tao/longdouble.cpp +5 -9
- data/ext/libr2tao/object.cpp +37 -53
- data/ext/libr2tao/orb.cpp +46 -73
- data/ext/libr2tao/r2tao_ext.h +8 -19
- data/ext/libr2tao/required.cpp +3 -8
- data/ext/libr2tao/required.h +18 -34
- data/ext/libr2tao/values.cpp +97 -98
- data/ext/libr2tao/values.h +35 -37
- data/ext/librpoa/iortable.cpp +6 -7
- data/ext/librpoa/poa.cpp +29 -32
- data/ext/librpoa/servant.cpp +39 -113
- data/ext/librpoa/servant.h +18 -40
- data/lib/corba/cbase/ORB.rb +26 -23
- data/lib/corba/cbase/Request.rb +3 -3
- data/lib/corba/cbase/Streams.rb +2 -2
- data/lib/corba/cbase/Typecode.rb +6 -6
- data/lib/corba/cbase/Values.rb +4 -2
- data/lib/corba/cbase/exception.rb +6 -4
- data/lib/corba/cbase/poa.rb +1 -1
- data/lib/corba/cbase/policies.rb +2 -2
- data/lib/corba/cbase/require.rb +8 -1
- data/lib/corba/cmds/base.rb +1 -1
- data/lib/corba/common/Any.rb +3 -2
- data/lib/corba/common/IDL.rb +1 -1
- data/lib/corba/common/ORB.rb +22 -22
- data/lib/corba/common/Object.rb +14 -14
- data/lib/corba/common/Servant.rb +4 -4
- data/lib/corba/common/Stub.rb +6 -6
- data/lib/corba/common/Typecode.rb +69 -42
- data/lib/corba/common/Union.rb +5 -0
- data/lib/corba/common/Values.rb +1 -0
- data/lib/corba/common/const.rb +2 -2
- data/lib/corba/common/exception.rb +2 -1
- data/lib/corba/common/version.rb +2 -2
- data/lib/corba/idl/IDL.rb +1 -1
- data/lib/corba/jbase/Any.rb +28 -26
- data/lib/corba/jbase/ORB.rb +5 -5
- data/lib/corba/jbase/Object.rb +13 -13
- data/lib/corba/jbase/Request.rb +8 -8
- data/lib/corba/jbase/Servant.rb +10 -10
- data/lib/corba/jbase/ServerRequest.rb +7 -7
- data/lib/corba/jbase/Streams.rb +67 -3
- data/lib/corba/jbase/Typecode.rb +17 -16
- data/lib/corba/jbase/Values.rb +2 -0
- data/lib/corba/jbase/exception.rb +2 -1
- data/lib/corba/jbase/poa.rb +20 -20
- data/lib/corba/jbase/policies.rb +32 -32
- data/lib/corba/jbase/require.rb +4 -0
- data/lib/corba/poa.rb +1 -1
- data/lib/corba/policies.rb +1 -1
- data/lib/corba/require.rb +2 -2
- data/lib/corba/svcs/ins/cos_naming.rb +37 -28
- data/lib/corba/svcs/ins/ins.rb +51 -51
- data/lib/corba/svcs/ins/naming_service.rb +8 -8
- data/lib/corba.rb +1 -1
- data/lib/ridlbe/ruby/config.rb +37 -30
- data/lib/ridlbe/ruby/walker.rb +295 -272
- data/mkrf_conf_srcgem.rb +6 -6
- data/rakelib/bin.rake +1 -1
- data/rakelib/bin.rb +3 -3
- data/rakelib/build.rake +16 -16
- data/rakelib/config.rake +1 -1
- data/rakelib/config.rb +22 -22
- data/rakelib/ext.rake +7 -68
- data/rakelib/ext.rb +15 -15
- data/rakelib/ext_r2tao.rb +12 -55
- data/rakelib/gem.rake +25 -25
- data/rakelib/gem.rb +6 -6
- data/rakelib/package.rake +1 -1
- data/test/BiDirectional/client.rb +17 -17
- data/test/BiDirectional/run_test.rb +11 -11
- data/test/BiDirectional/server.rb +24 -25
- data/test/CORBA_Services/Naming/BindingIterator/client.rb +17 -17
- data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +13 -13
- data/test/CORBA_Services/Naming/BindingIterator/server.rb +19 -19
- data/test/CORBA_Services/Naming/Corbaname/client.rb +15 -15
- data/test/CORBA_Services/Naming/Corbaname/run_test.rb +13 -13
- data/test/CORBA_Services/Naming/Corbaname/server.rb +30 -30
- data/test/CORBA_Services/Naming/Simple/client.rb +16 -16
- data/test/CORBA_Services/Naming/Simple/run_test.rb +13 -13
- data/test/CORBA_Services/Naming/Simple/server.rb +19 -19
- data/test/Collocation/run_test.rb +10 -10
- data/test/Collocation/test.rb +27 -20
- data/test/Connect_Timeout/client.rb +16 -17
- data/test/Connect_Timeout/run_test.rb +10 -10
- data/test/DII/client.rb +30 -30
- data/test/DII/run_test.rb +11 -11
- data/test/DII/server.rb +16 -16
- data/test/DSI/client.rb +16 -16
- data/test/DSI/run_test.rb +11 -11
- data/test/DSI/server.rb +17 -17
- data/test/Exceptions/client.rb +21 -21
- data/test/Exceptions/run_test.rb +11 -11
- data/test/Exceptions/server.rb +16 -16
- data/test/Hello/client.rb +16 -16
- data/test/Hello/run_test.rb +11 -11
- data/test/Hello/server.rb +17 -17
- data/test/IDL_Test/client.rb +21 -21
- data/test/IDL_Test/run_test.rb +11 -11
- data/test/IDL_Test/server.rb +19 -19
- data/test/IORMap/client.rb +14 -14
- data/test/IORMap/run_test.rb +11 -11
- data/test/IORMap/server.rb +26 -26
- data/test/IORTable/client.rb +14 -14
- data/test/IORTable/run_test.rb +11 -11
- data/test/IORTable/server.rb +26 -26
- data/test/Implicit_Conversion/client.rb +20 -17
- data/test/Implicit_Conversion/run_test.rb +11 -11
- data/test/Implicit_Conversion/server.rb +16 -16
- data/test/Multi_Threading/Multiple_ORB/client.rb +14 -14
- data/test/Multi_Threading/Multiple_ORB/run_test.rb +12 -12
- data/test/Multi_Threading/Multiple_ORB/server.rb +17 -17
- data/test/Multi_Threading/Simple/client.rb +17 -17
- data/test/Multi_Threading/Simple/run_test.rb +11 -11
- data/test/Multi_Threading/Simple/server.rb +16 -16
- data/test/Multi_Threading/Threads/client.rb +16 -16
- data/test/Multi_Threading/Threads/run_test.rb +11 -11
- data/test/Multi_Threading/Threads/server.rb +22 -22
- data/test/Multi_Threading/Threads/watchdog.rb +16 -16
- data/test/Multiple_Servant_Interfaces/client.rb +14 -14
- data/test/Multiple_Servant_Interfaces/run_test.rb +11 -11
- data/test/Multiple_Servant_Interfaces/server.rb +18 -18
- data/test/Nil/run_test.rb +10 -10
- data/test/Nil/test.rb +14 -15
- data/test/OBV/AbstractInterface/client.rb +14 -14
- data/test/OBV/AbstractInterface/run_test.rb +11 -11
- data/test/OBV/AbstractInterface/server.rb +20 -19
- data/test/OBV/Custom/OBV_impl.rb +2 -0
- data/test/OBV/Custom/client.rb +14 -14
- data/test/OBV/Custom/run_test.rb +11 -11
- data/test/OBV/Custom/server.rb +16 -16
- data/test/OBV/Simple/OBV_impl.rb +1 -0
- data/test/OBV/Simple/client.rb +14 -14
- data/test/OBV/Simple/run_test.rb +11 -11
- data/test/OBV/Simple/server.rb +16 -16
- data/test/OBV/Simple_Event/Event_impl.rb +1 -0
- data/test/OBV/Simple_Event/client.rb +14 -14
- data/test/OBV/Simple_Event/run_test.rb +11 -11
- data/test/OBV/Simple_Event/server.rb +16 -16
- data/test/OBV/Supports/client.rb +19 -19
- data/test/OBV/Supports/run_test.rb +11 -11
- data/test/OBV/Supports/server.rb +15 -15
- data/test/OBV/Supports/supports_impl.rb +3 -0
- data/test/OBV/Tree/client.rb +14 -14
- data/test/OBV/Tree/run_test.rb +11 -11
- data/test/OBV/Tree/server.rb +19 -19
- data/test/OBV/Truncatable/Truncatable_impl.rb +1 -1
- data/test/OBV/Truncatable/client.rb +57 -57
- data/test/OBV/Truncatable/run_test.rb +11 -11
- data/test/OBV/Truncatable/server.rb +15 -15
- data/test/OBV/ValueBox/client.rb +154 -153
- data/test/OBV/ValueBox/run_test.rb +11 -11
- data/test/OBV/ValueBox/server.rb +42 -42
- data/test/Object/client.rb +15 -15
- data/test/Object/run_test.rb +11 -11
- data/test/Object/server.rb +19 -19
- data/test/POA/run_test.rb +10 -10
- data/test/POA/test.rb +16 -16
- data/test/Param_Test/client.rb +51 -51
- data/test/Param_Test/run_test.rb +11 -11
- data/test/Param_Test/server.rb +59 -59
- data/test/Performance/Simple/client.rb +16 -16
- data/test/Performance/Simple/run_test.rb +11 -11
- data/test/Performance/Simple/server.rb +16 -16
- data/test/Policies/run_test.rb +10 -10
- data/test/Policies/test.rb +23 -24
- data/test/Timeout/client.rb +21 -21
- data/test/Timeout/run_test.rb +11 -11
- data/test/Timeout/server.rb +22 -22
- data/test/lib/assert.rb +0 -1
- data/test/lib/test.rb +28 -23
- data/test/test_runner.rb +21 -22
- metadata +6 -9
- data/ext/extload/extload.c +0 -60
- data/ext/librpoa/srvreq_fix.cpp +0 -282
- data/ext/librpoa/srvreq_fix.h +0 -148
data/ext/librpoa/servant.cpp
CHANGED
@@ -11,7 +11,6 @@
|
|
11
11
|
#------------------------------------------------------------------*/
|
12
12
|
|
13
13
|
#include "poa.h"
|
14
|
-
#include "ace/Auto_Ptr.h"
|
15
14
|
#include "tao/DynamicInterface/Server_Request.h"
|
16
15
|
#include "tao/DynamicInterface/Dynamic_Implementation.h"
|
17
16
|
#include "tao/AnyTypeCode/Any.h"
|
@@ -25,10 +24,8 @@
|
|
25
24
|
#include "exception.h"
|
26
25
|
#include "orb.h"
|
27
26
|
#include "servant.h"
|
28
|
-
|
29
|
-
#
|
30
|
-
# include "srvreq_fix.cpp"
|
31
|
-
#endif
|
27
|
+
#include <memory>
|
28
|
+
#include <cstring>
|
32
29
|
|
33
30
|
#define RUBY_INVOKE_FUNC RUBY_ALLOC_FUNC
|
34
31
|
|
@@ -74,7 +71,7 @@ void r2tao_init_Servant()
|
|
74
71
|
VALUE klass;
|
75
72
|
|
76
73
|
r2tao_cServant = klass = rb_eval_string("::R2CORBA::PortableServer::Servant");
|
77
|
-
rb_define_alloc_func (r2tao_cServant,
|
74
|
+
rb_define_alloc_func (r2tao_cServant, srv_alloc);
|
78
75
|
rb_define_method(klass, "_default_POA", RUBY_METHOD_FUNC(r2tao_Servant_default_POA), 0);
|
79
76
|
rb_define_method(klass, "_this", RUBY_METHOD_FUNC(r2tao_Servant_this), 0);
|
80
77
|
|
@@ -98,6 +95,7 @@ void r2tao_init_Servant()
|
|
98
95
|
interface_repository_id_ID = rb_intern ("_interface_repository_id");
|
99
96
|
|
100
97
|
r2tao_cDynamicImp = klass = rb_eval_string("::R2CORBA::PortableServer::DynamicImplementation");
|
98
|
+
rb_define_alloc_func (r2tao_cDynamicImp, srv_alloc);
|
101
99
|
|
102
100
|
invoke_ID = rb_intern ("invoke");
|
103
101
|
primary_interface_ID = rb_intern ("_primary_interface");
|
@@ -113,15 +111,15 @@ void r2tao_init_Servant()
|
|
113
111
|
//===================================================================
|
114
112
|
|
115
113
|
struct DSI_Data {
|
116
|
-
|
114
|
+
CORBA::ServerRequest_ptr _request;
|
117
115
|
CORBA::NVList_ptr _nvlist;
|
118
116
|
CORBA::TypeCode_var _result_type;
|
119
117
|
VALUE _rData;
|
120
118
|
|
121
|
-
DSI_Data(
|
122
|
-
: _request(_req), _nvlist(
|
119
|
+
DSI_Data(CORBA::ServerRequest_ptr _req)
|
120
|
+
: _request(_req), _nvlist(nullptr), _rData(Qnil) {}
|
123
121
|
~DSI_Data() {
|
124
|
-
if (this->_rData!=Qnil) { DATA_PTR(this->_rData) =
|
122
|
+
if (this->_rData!=Qnil) { DATA_PTR(this->_rData) = nullptr; }
|
125
123
|
}
|
126
124
|
};
|
127
125
|
|
@@ -134,7 +132,7 @@ VALUE r2tao_ServerRequest_operation(VALUE self)
|
|
134
132
|
{
|
135
133
|
if (DATA_PTR (self) != 0)
|
136
134
|
{
|
137
|
-
|
135
|
+
CORBA::ServerRequest_ptr request = static_cast<DSI_Data*> (DATA_PTR (self))->_request;
|
138
136
|
return rb_str_new2 (request->operation ());
|
139
137
|
}
|
140
138
|
return Qnil;
|
@@ -152,7 +150,7 @@ VALUE r2tao_ServerRequest_describe(VALUE self, VALUE desc)
|
|
152
150
|
X_CORBA (BAD_INV_ORDER);
|
153
151
|
}
|
154
152
|
|
155
|
-
|
153
|
+
CORBA::ServerRequest_ptr request = dsi_data->_request;
|
156
154
|
|
157
155
|
if (desc != Qnil && rb_type (desc) == T_HASH)
|
158
156
|
{
|
@@ -289,11 +287,11 @@ VALUE r2tao_ServerRequest_get(VALUE self, VALUE key)
|
|
289
287
|
if (rb_obj_is_kind_of (key, rb_cString) == Qtrue)
|
290
288
|
{
|
291
289
|
char* arg_name = RSTRING_PTR (key);
|
292
|
-
CORBA::ULong arg_num = dsi_data->_nvlist->count ();
|
293
|
-
for (CORBA::ULong ix=0; ix<arg_num ;++ix)
|
290
|
+
CORBA::ULong const arg_num = dsi_data->_nvlist->count ();
|
291
|
+
for (CORBA::ULong ix=0; ix < arg_num ;++ix)
|
294
292
|
{
|
295
293
|
CORBA::NamedValue_ptr _nv = dsi_data->_nvlist->item (ix);
|
296
|
-
if (_nv->name () &&
|
294
|
+
if (_nv->name () && std::strcmp (arg_name, _nv->name ()) == 0)
|
297
295
|
{
|
298
296
|
R2TAO_TRY
|
299
297
|
{
|
@@ -343,11 +341,11 @@ VALUE r2tao_ServerRequest_set(VALUE self, VALUE key, VALUE val)
|
|
343
341
|
if (rb_obj_is_kind_of (key, rb_cString) == Qtrue)
|
344
342
|
{
|
345
343
|
char* arg_name = RSTRING_PTR (key);
|
346
|
-
CORBA::ULong arg_num = dsi_data->_nvlist->count ();
|
347
|
-
for (CORBA::ULong ix=0; ix<arg_num ;++ix)
|
344
|
+
CORBA::ULong const arg_num = dsi_data->_nvlist->count ();
|
345
|
+
for (CORBA::ULong ix = 0; ix < arg_num ;++ix)
|
348
346
|
{
|
349
347
|
CORBA::NamedValue_ptr _nv = dsi_data->_nvlist->item (ix);
|
350
|
-
if (_nv->name () &&
|
348
|
+
if (_nv->name () && std::strcmp (arg_name, _nv->name ()) == 0)
|
351
349
|
{
|
352
350
|
R2TAO_TRY
|
353
351
|
{
|
@@ -483,87 +481,20 @@ VALUE DSI_Servant::_invoke_implementation(VALUE args)
|
|
483
481
|
|
484
482
|
DSI_Servant::METHOD DSI_Servant::method_id (const char* method)
|
485
483
|
{
|
486
|
-
if (
|
484
|
+
if (std::strcmp (method, "_is_a") == 0)
|
487
485
|
return IS_A;
|
488
|
-
else if (
|
486
|
+
else if (std::strcmp (method, "_repository_id") == 0)
|
489
487
|
return REPOSITORY_ID;
|
490
|
-
else if (
|
488
|
+
else if (std::strcmp (method, "_non_existent") == 0)
|
491
489
|
return NON_EXISTENT;
|
492
|
-
else if (
|
490
|
+
else if (std::strcmp (method, "_component") == 0)
|
493
491
|
return GET_COMPONENT;
|
494
|
-
else if (
|
492
|
+
else if (std::strcmp (method, "_interface") == 0)
|
495
493
|
return GET_INTERFACE;
|
496
494
|
|
497
495
|
return NONE;
|
498
496
|
}
|
499
497
|
|
500
|
-
#if RPOA_NEED_DSI_FIX
|
501
|
-
void DSI_Servant::invoke (CORBA::ServerRequest_ptr /*request*/)
|
502
|
-
{}
|
503
|
-
|
504
|
-
void DSI_Servant::_dispatch (TAO_ServerRequest &request,
|
505
|
-
void * /*context*/)
|
506
|
-
{
|
507
|
-
// No need to do any of this if the client isn't waiting.
|
508
|
-
if (request.response_expected ())
|
509
|
-
{
|
510
|
-
if (request.is_forwarded ())
|
511
|
-
{
|
512
|
-
request.init_reply ();
|
513
|
-
request.tao_send_reply ();
|
514
|
-
|
515
|
-
// No need to invoke in this case.
|
516
|
-
return;
|
517
|
-
}
|
518
|
-
else if (request.sync_with_server ())
|
519
|
-
{
|
520
|
-
// The last line before the call to this function
|
521
|
-
// was an ACE_CHECK_RETURN, so if we're here, we
|
522
|
-
// know there is no exception so far, and that's all
|
523
|
-
// a SYNC_WITH_SERVER client request cares about.
|
524
|
-
request.send_no_exception_reply ();
|
525
|
-
}
|
526
|
-
}
|
527
|
-
|
528
|
-
// Create DSI request object.
|
529
|
-
R2CORBA::ServerRequest *dsi_request = 0;
|
530
|
-
ACE_NEW (dsi_request,
|
531
|
-
R2CORBA::ServerRequest (request));
|
532
|
-
|
533
|
-
try
|
534
|
-
{
|
535
|
-
// Delegate to user.
|
536
|
-
this->invoke_fix (dsi_request);
|
537
|
-
|
538
|
-
// Only if the client is waiting.
|
539
|
-
if (request.response_expected () && !request.sync_with_server ())
|
540
|
-
{
|
541
|
-
dsi_request->dsi_marshal ();
|
542
|
-
}
|
543
|
-
}
|
544
|
-
catch (::CORBA::Exception& ex)
|
545
|
-
{
|
546
|
-
// Only if the client is waiting.
|
547
|
-
if (request.response_expected () && !request.sync_with_server ())
|
548
|
-
{
|
549
|
-
if (request.collocated ()
|
550
|
-
&& request.operation_details ()->cac () != 0)
|
551
|
-
{
|
552
|
-
// If we have a cac it will handle the exception and no
|
553
|
-
// need to do any further processing
|
554
|
-
request.operation_details ()->cac ()->handle_corba_exception (
|
555
|
-
request, &ex);
|
556
|
-
return;
|
557
|
-
}
|
558
|
-
else
|
559
|
-
request.tao_send_reply_exception (ex);
|
560
|
-
}
|
561
|
-
}
|
562
|
-
|
563
|
-
::CORBA::release (dsi_request);
|
564
|
-
}
|
565
|
-
#endif
|
566
|
-
|
567
498
|
// invocation helper for threadsafe calling of Ruby code
|
568
499
|
void* DSI_Servant::thread_safe_invoke (void * arg)
|
569
500
|
{
|
@@ -581,24 +512,20 @@ void* DSI_Servant::thread_safe_invoke (void * arg)
|
|
581
512
|
return 0;
|
582
513
|
}
|
583
514
|
|
584
|
-
# if RPOA_NEED_DSI_FIX
|
585
|
-
void DSI_Servant::invoke_fix (R2CORBA::ServerRequest_ptr request)
|
586
|
-
# else
|
587
515
|
void DSI_Servant::invoke (CORBA::ServerRequest_ptr request)
|
588
|
-
# endif
|
589
516
|
{
|
590
517
|
ThreadSafeArg tca_(this, request);
|
591
518
|
|
592
519
|
void* rc = r2tao_call_thread_safe (DSI_Servant::thread_safe_invoke, &tca_);
|
593
|
-
if (rc !=
|
520
|
+
if (rc != nullptr)
|
594
521
|
{
|
595
522
|
CORBA::SystemException* exc = reinterpret_cast<CORBA::SystemException*> (rc);
|
596
|
-
|
523
|
+
std::unique_ptr<CORBA::SystemException> e_ptr(exc);
|
597
524
|
exc->_raise ();
|
598
525
|
}
|
599
526
|
}
|
600
527
|
|
601
|
-
void DSI_Servant::inner_invoke (
|
528
|
+
void DSI_Servant::inner_invoke (CORBA::ServerRequest_ptr request)
|
602
529
|
{
|
603
530
|
if (TAO_debug_level > 7)
|
604
531
|
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - Servant::invoke(%C)\n", request->operation ()));
|
@@ -628,13 +555,13 @@ void DSI_Servant::inner_invoke (R2CORBA_ServerRequest_ptr request)
|
|
628
555
|
// set ORB arguments (retrieves data for IN/INOUT args)
|
629
556
|
request->arguments (nvlist);
|
630
557
|
|
631
|
-
const char *tmp =
|
558
|
+
const char *tmp = nullptr;
|
632
559
|
(*_nv->value ()) >>= tmp;
|
633
560
|
|
634
561
|
f = this->_is_a (tmp);
|
635
562
|
|
636
563
|
if (TAO_debug_level > 5)
|
637
|
-
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) _is_a (%
|
564
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) _is_a (%C) -> %d\n", tmp, f));
|
638
565
|
}
|
639
566
|
else
|
640
567
|
{
|
@@ -663,7 +590,7 @@ void DSI_Servant::inner_invoke (R2CORBA_ServerRequest_ptr request)
|
|
663
590
|
CORBA::String_var repo_id = this->_repository_id ();
|
664
591
|
|
665
592
|
if (TAO_debug_level > 5)
|
666
|
-
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) _repository_id () -> %
|
593
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) _repository_id () -> %C\n", repo_id.in ()));
|
667
594
|
|
668
595
|
CORBA::Any _any;
|
669
596
|
_any <<= repo_id.in ();
|
@@ -700,13 +627,13 @@ void DSI_Servant::inner_invoke (R2CORBA_ServerRequest_ptr request)
|
|
700
627
|
}
|
701
628
|
}
|
702
629
|
|
703
|
-
void DSI_Servant::invoke_DSI (
|
630
|
+
void DSI_Servant::invoke_DSI (CORBA::ServerRequest_ptr request)
|
704
631
|
{
|
705
632
|
if (TAO_debug_level > 5)
|
706
633
|
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - Servant::invoke_DSI(%C) entry\n", request->operation ()));
|
707
634
|
|
708
635
|
// wrap request for Ruby; cleanup automatically
|
709
|
-
|
636
|
+
std::unique_ptr<DSI_Data> dsi_data(new DSI_Data(request));
|
710
637
|
|
711
638
|
VALUE srvreq = Data_Wrap_Struct(r2tao_cServerRequest, 0, 0, dsi_data.get ());
|
712
639
|
|
@@ -752,7 +679,7 @@ void DSI_Servant::invoke_DSI (R2CORBA_ServerRequest_ptr request)
|
|
752
679
|
_exc->completed (
|
753
680
|
static_cast<CORBA::CompletionStatus> (NUM2ULONG (rb_iv_get (rexc, "@completed"))));
|
754
681
|
|
755
|
-
|
682
|
+
std::unique_ptr<CORBA::SystemException> e_ptr(_exc);
|
756
683
|
_exc->_raise ();
|
757
684
|
}
|
758
685
|
else
|
@@ -825,7 +752,7 @@ void DSI_Servant::invoke_DSI (R2CORBA_ServerRequest_ptr request)
|
|
825
752
|
}
|
826
753
|
}
|
827
754
|
|
828
|
-
void DSI_Servant::invoke_SI (
|
755
|
+
void DSI_Servant::invoke_SI (CORBA::ServerRequest_ptr request)
|
829
756
|
{
|
830
757
|
if (TAO_debug_level > 5)
|
831
758
|
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - Servant::invoke_SI(%C) entry\n", request->operation ()));
|
@@ -985,7 +912,7 @@ void DSI_Servant::invoke_SI (R2CORBA_ServerRequest_ptr request)
|
|
985
912
|
_exc->completed (
|
986
913
|
static_cast<CORBA::CompletionStatus> (NUM2ULONG (rb_iv_get (rexc, "@completed"))));
|
987
914
|
|
988
|
-
|
915
|
+
std::unique_ptr<CORBA::SystemException> e_ptr(_exc);
|
989
916
|
_exc->_raise ();
|
990
917
|
}
|
991
918
|
else
|
@@ -1097,7 +1024,7 @@ CORBA::Boolean DSI_Servant::_is_a (const char *logical_type_id)
|
|
1097
1024
|
}
|
1098
1025
|
}
|
1099
1026
|
|
1100
|
-
CORBA::Boolean DSI_Servant::_non_existent (
|
1027
|
+
CORBA::Boolean DSI_Servant::_non_existent ()
|
1101
1028
|
{
|
1102
1029
|
static R2TAO_RBFuncall FN_non_existent ("_non_existent?");
|
1103
1030
|
|
@@ -1113,7 +1040,7 @@ CORBA::Boolean DSI_Servant::_non_existent (void)
|
|
1113
1040
|
}
|
1114
1041
|
}
|
1115
1042
|
|
1116
|
-
CORBA::Object_ptr DSI_Servant::_get_component (
|
1043
|
+
CORBA::Object_ptr DSI_Servant::_get_component ()
|
1117
1044
|
{
|
1118
1045
|
static R2TAO_RBFuncall FN_get_component ("_get_component");
|
1119
1046
|
|
@@ -1131,7 +1058,7 @@ CORBA::Object_ptr DSI_Servant::_get_component (void)
|
|
1131
1058
|
}
|
1132
1059
|
}
|
1133
1060
|
|
1134
|
-
const char *DSI_Servant::_interface_repository_id (
|
1061
|
+
const char *DSI_Servant::_interface_repository_id () const
|
1135
1062
|
{
|
1136
1063
|
static R2TAO_RBFuncall FN_repository_id ("_repository_id");
|
1137
1064
|
|
@@ -1179,7 +1106,7 @@ const char *DSI_Servant::_interface_repository_id (void) const
|
|
1179
1106
|
}
|
1180
1107
|
}
|
1181
1108
|
|
1182
|
-
char * DSI_Servant::_repository_id (
|
1109
|
+
char * DSI_Servant::_repository_id ()
|
1183
1110
|
{
|
1184
1111
|
return CORBA::string_dup (this->_interface_repository_id ());
|
1185
1112
|
}
|
@@ -1243,7 +1170,7 @@ VALUE r2tao_Servant_default_POA(VALUE self)
|
|
1243
1170
|
{
|
1244
1171
|
R2TAO_TRY
|
1245
1172
|
{
|
1246
|
-
DSI_Servant* _servant
|
1173
|
+
DSI_Servant* _servant {};
|
1247
1174
|
if (DATA_PTR (self) == 0)
|
1248
1175
|
{
|
1249
1176
|
// create new C++ servant object
|
@@ -1269,7 +1196,7 @@ VALUE r2tao_Servant_this(VALUE self)
|
|
1269
1196
|
R2TAO_TRY
|
1270
1197
|
{
|
1271
1198
|
bool _new_srv = false;
|
1272
|
-
DSI_Servant* _servant
|
1199
|
+
DSI_Servant* _servant {};
|
1273
1200
|
if (DATA_PTR (self) == 0)
|
1274
1201
|
{
|
1275
1202
|
// create new C++ servant object
|
@@ -1321,9 +1248,8 @@ VALUE r2tao_Servant_this(VALUE self)
|
|
1321
1248
|
static VALUE
|
1322
1249
|
srv_alloc(VALUE klass)
|
1323
1250
|
{
|
1324
|
-
VALUE obj;
|
1325
1251
|
// we start off without the C++ representation
|
1326
|
-
obj = Data_Wrap_Struct(klass,
|
1252
|
+
VALUE obj = Data_Wrap_Struct(klass, nullptr, srv_free, nullptr);
|
1327
1253
|
return obj;
|
1328
1254
|
}
|
1329
1255
|
|
data/ext/librpoa/servant.h
CHANGED
@@ -10,50 +10,33 @@
|
|
10
10
|
# Copyright (c) Remedy IT Expertise BV
|
11
11
|
#------------------------------------------------------------------*/
|
12
12
|
|
13
|
-
#if ((TAO_MAJOR_VERSION < 2) || (TAO_MAJOR_VERSION == 2 && TAO_MINOR_VERSION == 0 && TAO_MICRO_VERSION <= 1))
|
14
|
-
# define RPOA_NEED_DSI_FIX 1
|
15
|
-
|
16
|
-
# include "srvreq_fix.h"
|
17
|
-
|
18
|
-
# define R2CORBA_ServerRequest R2CORBA::ServerRequest
|
19
|
-
# define R2CORBA_ServerRequest_ptr R2CORBA::ServerRequest_ptr
|
20
|
-
#else
|
21
|
-
# define R2CORBA_ServerRequest CORBA::ServerRequest
|
22
|
-
# define R2CORBA_ServerRequest_ptr CORBA::ServerRequest_ptr
|
23
|
-
#endif
|
24
|
-
|
25
13
|
//-------------------------------------------------------------------
|
26
14
|
// R2TAO Servant class
|
27
15
|
//
|
28
16
|
//===================================================================
|
29
|
-
|
30
17
|
class DSI_Servant : public PortableServer::DynamicImplementation
|
31
18
|
{
|
32
19
|
public:
|
20
|
+
/// ctor
|
21
|
+
DSI_Servant () = delete;
|
33
22
|
DSI_Servant (VALUE rbServant);
|
34
|
-
|
35
|
-
virtual ~DSI_Servant ();
|
36
|
-
// dtor
|
23
|
+
~DSI_Servant () override;
|
37
24
|
|
38
|
-
|
39
|
-
//ACE_THROW_SPEC ((CORBA::SystemException));
|
40
|
-
#if RPOA_NEED_DSI_FIX
|
41
|
-
void invoke_fix (R2CORBA::ServerRequest_ptr request);
|
42
|
-
#endif
|
25
|
+
void invoke (CORBA::ServerRequest_ptr request) override;
|
43
26
|
|
44
|
-
|
27
|
+
CORBA::RepositoryId _primary_interface (
|
45
28
|
const PortableServer::ObjectId &oid,
|
46
|
-
PortableServer::POA_ptr poa);
|
29
|
+
PortableServer::POA_ptr poa) override;
|
47
30
|
|
48
|
-
|
31
|
+
CORBA::Boolean _is_a (const char *logical_type_id) override;
|
49
32
|
|
50
|
-
|
33
|
+
CORBA::Boolean _non_existent () override;
|
51
34
|
|
52
|
-
//virtual CORBA::InterfaceDef_ptr _get_interface (
|
35
|
+
//virtual CORBA::InterfaceDef_ptr _get_interface ();
|
53
36
|
|
54
|
-
|
37
|
+
CORBA::Object_ptr _get_component () override;
|
55
38
|
|
56
|
-
|
39
|
+
char * _repository_id () override;
|
57
40
|
|
58
41
|
enum METHOD {
|
59
42
|
NONE,
|
@@ -73,12 +56,7 @@ public:
|
|
73
56
|
void activate_servant ();
|
74
57
|
|
75
58
|
protected:
|
76
|
-
|
77
|
-
|
78
|
-
#if RPOA_NEED_DSI_FIX
|
79
|
-
/// Turns around and calls invoke.
|
80
|
-
virtual void _dispatch (TAO_ServerRequest &request, void *context);
|
81
|
-
#endif
|
59
|
+
const char *_interface_repository_id () const override;
|
82
60
|
|
83
61
|
void register_with_servant ();
|
84
62
|
|
@@ -87,26 +65,26 @@ protected:
|
|
87
65
|
|
88
66
|
METHOD method_id (const char* method);
|
89
67
|
|
90
|
-
|
68
|
+
void inner_invoke (CORBA::ServerRequest_ptr request);
|
91
69
|
|
92
|
-
void invoke_SI (
|
93
|
-
void invoke_DSI (
|
70
|
+
void invoke_SI (CORBA::ServerRequest_ptr request);
|
71
|
+
void invoke_DSI (CORBA::ServerRequest_ptr request);
|
94
72
|
|
95
73
|
static VALUE _invoke_implementation(VALUE args);
|
96
74
|
|
97
75
|
private:
|
76
|
+
/// The Ruby Servant
|
98
77
|
VALUE rbServant_;
|
99
|
-
// The Ruby Servant
|
100
78
|
|
101
79
|
CORBA::String_var repo_id_;
|
102
80
|
|
103
81
|
struct ThreadSafeArg
|
104
82
|
{
|
105
83
|
ThreadSafeArg (DSI_Servant* srv,
|
106
|
-
|
84
|
+
CORBA::ServerRequest_ptr req)
|
107
85
|
: servant_(srv), request_(req) {}
|
108
86
|
DSI_Servant* servant_;
|
109
|
-
|
87
|
+
CORBA::ServerRequest_ptr request_;
|
110
88
|
};
|
111
89
|
|
112
90
|
static void* thread_safe_invoke (void * arg);
|
data/lib/corba/cbase/ORB.rb
CHANGED
@@ -41,12 +41,12 @@ module R2CORBA
|
|
41
41
|
prop = nil
|
42
42
|
a1, a2, a3 = args
|
43
43
|
if Array === a1
|
44
|
-
raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size>3
|
44
|
+
raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size > 3
|
45
45
|
argv = a1
|
46
46
|
orb_id = (Hash === a2 ? nil : a2)
|
47
47
|
prop = (Hash === a2 ? a2 : a3)
|
48
48
|
elsif args.size == 1 || Hash === a2
|
49
|
-
raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size>2
|
49
|
+
raise ArgumentError, "Incorrect nr. of arguments; #{args.size}" if args.size > 2
|
50
50
|
orb_id = a1
|
51
51
|
prop = a2
|
52
52
|
else
|
@@ -54,7 +54,7 @@ module R2CORBA
|
|
54
54
|
end
|
55
55
|
raise ArgumentError, "Invalid argument #{prop.class}; expected Hash" unless prop.nil? || Hash === prop
|
56
56
|
unless prop.nil?()
|
57
|
-
prop.inject(argv) {|a,(k,v)| a << k; a << v; a}
|
57
|
+
prop.inject(argv) {|a, (k, v)| a << k; a << v; a}
|
58
58
|
end
|
59
59
|
@@cached_orb = CORBA::Native::ORB.init(argv.collect {|a| a.to_s }.concat(@@_default_args), orb_id.nil?() ? nil : orb_id.to_s)
|
60
60
|
end
|
@@ -98,11 +98,11 @@ module R2CORBA
|
|
98
98
|
else
|
99
99
|
@running ||= true
|
100
100
|
raise CORBA::BAD_INV_ORDER.new('ORB has been shutdown', 0, CORBA::COMPLETED_NO) if @shutdown
|
101
|
-
while (timeout.nil? or timeout>0) and !@shutdown
|
101
|
+
while (timeout.nil? or timeout > 0) and !@shutdown
|
102
102
|
to = timeout || 0.05
|
103
103
|
f, to = self.work_pending(to)
|
104
104
|
timeout = to unless timeout.nil?
|
105
|
-
if f and !@shutdown and (timeout.nil? or timeout>0)
|
105
|
+
if f and !@shutdown and (timeout.nil? or timeout > 0)
|
106
106
|
to = timeout || 0.05
|
107
107
|
to = self.perform_work(to)
|
108
108
|
timeout = to unless timeout.nil?
|
@@ -144,17 +144,20 @@ module R2CORBA
|
|
144
144
|
@q_ = []
|
145
145
|
super
|
146
146
|
end
|
147
|
+
|
147
148
|
def push(vfklass)
|
148
149
|
synchronize do
|
149
150
|
@q_ << vfklass
|
150
151
|
end
|
151
152
|
end
|
153
|
+
|
152
154
|
def process_all(&block)
|
153
155
|
synchronize do
|
154
156
|
@q_.each { |vf| block.call(vf) }
|
155
157
|
@q_.clear
|
156
158
|
end
|
157
159
|
end
|
160
|
+
|
158
161
|
def empty?()
|
159
162
|
f = false
|
160
163
|
synchronize do
|
@@ -186,22 +189,22 @@ module R2CORBA
|
|
186
189
|
private
|
187
190
|
@@sigreg = {}
|
188
191
|
def CORBA.signal_numbers
|
189
|
-
(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
192
|
+
([1, # HUP
|
193
|
+
2, # INT
|
194
|
+
3, # QUIT
|
195
|
+
5, # TRAP
|
196
|
+
6, # ABRT
|
197
|
+
10, # USR1
|
198
|
+
12, # USR2
|
199
|
+
13, # SIGPIPE
|
200
|
+
14, # ALRM
|
201
|
+
15, # TERM
|
202
|
+
17, # CHLD
|
203
|
+
18, # CONT
|
204
|
+
23, # URG
|
205
|
+
30, # PWR
|
206
|
+
31 # SYS
|
207
|
+
]) & Signal.list.values
|
205
208
|
end
|
206
209
|
|
207
210
|
def CORBA.handled_signals
|
@@ -210,7 +213,7 @@ module R2CORBA
|
|
210
213
|
sigcmd = Signal.trap(signum, 'DEFAULT')
|
211
214
|
Signal.trap(signum, sigcmd)
|
212
215
|
@@sigreg[signum] = sigcmd
|
213
|
-
if sigcmd.respond_to?(:call) or ['IGNORE','SIG_IGN','EXIT'].include?(sigcmd.to_s)
|
216
|
+
if sigcmd.respond_to?(:call) or ['IGNORE', 'SIG_IGN', 'EXIT'].include?(sigcmd.to_s)
|
214
217
|
signum
|
215
218
|
else
|
216
219
|
nil
|
@@ -222,7 +225,7 @@ module R2CORBA
|
|
222
225
|
def CORBA.handle_signal(signum)
|
223
226
|
if @@sigreg.has_key?(signum)
|
224
227
|
if @@sigreg[signum].respond_to?(:call)
|
225
|
-
if @@sigreg[signum].respond_to?(:parameters) && @@sigreg[signum].parameters.size>0
|
228
|
+
if @@sigreg[signum].respond_to?(:parameters) && @@sigreg[signum].parameters.size > 0
|
226
229
|
@@sigreg[signum].call(signum)
|
227
230
|
else
|
228
231
|
@@sigreg[signum].call
|
data/lib/corba/cbase/Request.rb
CHANGED
@@ -14,17 +14,17 @@ module R2CORBA
|
|
14
14
|
|
15
15
|
module Request
|
16
16
|
|
17
|
-
def add_in_arg(tc, val, nm='')
|
17
|
+
def add_in_arg(tc, val, nm = '')
|
18
18
|
self._arguments << [nm, CORBA::ARG_IN, tc, val]
|
19
19
|
self._arguments.size
|
20
20
|
end
|
21
21
|
|
22
|
-
def add_out_arg(tc, nm='')
|
22
|
+
def add_out_arg(tc, nm = '')
|
23
23
|
self._arguments << [nm, CORBA::ARG_OUT, tc]
|
24
24
|
self._arguments.size
|
25
25
|
end
|
26
26
|
|
27
|
-
def add_inout_arg(tc, val, nm='')
|
27
|
+
def add_inout_arg(tc, val, nm = '')
|
28
28
|
self._arguments << [nm, CORBA::ARG_INOUT, tc, val]
|
29
29
|
self._arguments.size
|
30
30
|
end
|
data/lib/corba/cbase/Streams.rb
CHANGED
@@ -42,7 +42,7 @@ module R2CORBA
|
|
42
42
|
when TK_DOUBLE
|
43
43
|
read_double()
|
44
44
|
when TK_LONGDOUBLE
|
45
|
-
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
45
|
+
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported', 0, CORBA::COMPLETED_NO)
|
46
46
|
when TK_FIXED
|
47
47
|
read_fixed()
|
48
48
|
when TK_CHAR
|
@@ -98,7 +98,7 @@ module R2CORBA
|
|
98
98
|
when TK_DOUBLE
|
99
99
|
write_double(value)
|
100
100
|
when TK_LONGDOUBLE
|
101
|
-
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported',0,CORBA::COMPLETED_NO)
|
101
|
+
raise CORBA::NO_IMPLEMENT.new('LongDouble not supported', 0, CORBA::COMPLETED_NO)
|
102
102
|
when TK_FIXED
|
103
103
|
write_fixed(value)
|
104
104
|
when TK_CHAR
|
data/lib/corba/cbase/Typecode.rb
CHANGED
@@ -118,7 +118,7 @@ module R2CORBA
|
|
118
118
|
content_tc = args.shift
|
119
119
|
length = args
|
120
120
|
raise ArgumentError, 'expected CORBA::TypeCode' unless content_tc.is_a?(CORBA::TypeCode)
|
121
|
-
if length.size>1
|
121
|
+
if length.size > 1
|
122
122
|
this_len = length.shift
|
123
123
|
content_tc = self.class.new(content_tc, *length)
|
124
124
|
else
|
@@ -196,7 +196,7 @@ module R2CORBA
|
|
196
196
|
|
197
197
|
protected
|
198
198
|
|
199
|
-
def _create_tc(id,name,modifier,base,members)
|
199
|
+
def _create_tc(id, name, modifier, base, members)
|
200
200
|
begin
|
201
201
|
CORBA::Native::TypeCode.create_tc(TK_VALUE, id.to_s, name.to_s,
|
202
202
|
CORBA::VT_MODIFIERS[modifier],
|
@@ -213,7 +213,7 @@ module R2CORBA
|
|
213
213
|
|
214
214
|
protected
|
215
215
|
|
216
|
-
def _create_tc(id,name,modifier,base,members)
|
216
|
+
def _create_tc(id, name, modifier, base, members)
|
217
217
|
begin
|
218
218
|
CORBA::Native::TypeCode.create_tc(TK_EVENT, id.to_s, name.to_s,
|
219
219
|
CORBA::VT_MODIFIERS[modifier],
|
@@ -321,7 +321,7 @@ module R2CORBA
|
|
321
321
|
|
322
322
|
protected
|
323
323
|
|
324
|
-
def _create_tc(id,name,members)
|
324
|
+
def _create_tc(id, name, members)
|
325
325
|
begin
|
326
326
|
CORBA::Native::TypeCode.create_tc(TK_STRUCT, id.to_s, name.to_s, members)
|
327
327
|
rescue ::NativeException
|
@@ -335,7 +335,7 @@ module R2CORBA
|
|
335
335
|
|
336
336
|
protected
|
337
337
|
|
338
|
-
def _create_tc(id,name,members)
|
338
|
+
def _create_tc(id, name, members)
|
339
339
|
begin
|
340
340
|
CORBA::Native::TypeCode.create_tc(TK_EXCEPT, id.to_s, name.to_s, members)
|
341
341
|
rescue ::NativeException
|
@@ -356,7 +356,7 @@ module R2CORBA
|
|
356
356
|
@members = []
|
357
357
|
def_inx = @tc_.default_index
|
358
358
|
@tc_.member_count.times do |i|
|
359
|
-
if def_inx < 0
|
359
|
+
if def_inx < 0 || def_inx != i
|
360
360
|
ml_ = @tc_.member_label(i)
|
361
361
|
else
|
362
362
|
ml_ = :default
|