[ciao-users] [CIAO] [questions on lack of _duplicate in a component's auto-generated reactor() method, etc...]
King, Perry (ES)
perry.king at ngc.com
Thu Nov 3 13:48:09 CDT 2016
CIAO VERSION: 1.3.2
TAO VERSION : 2.3.2
ACE VERSION : 6.3.2
HOST MACHINE and OPERATING SYSTEM:
Intel core I7 4-core Ivy bridge based PC, Centos 6.5
If on Windows based OS's, which version of WINSOCK do you
use?: N/A
TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
COMPILER NAME AND VERSION (AND PATCHLEVEL): Same
THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
specific file, simply state which one]:
#ifndef SNA_ACE_CONFIG_H
#define SNA_ACE_CONFIG_H
// Turn off default DNS lookup
#define TAO_USE_DOTTED_DECIMAL_ADDRESSES 1
// Turn on in-memory growable notification queue
#define ACE_HAS_REACTOR_NOTIFICATION_QUEUE 1
// Turn on "best" collocation strategy as default
#define TAO_DEFAULT_COLLOCATION_STRATEGY TAO_COLLOCATION_BEST
// Preestablish all CORBA connections during startup
// TODO: Pre-establishment of connections is broken
//#define CIAO_PRE_ESTABLISH_CONNECTIONS 1
// Turn on immediate symbol resolution
#define ACE_DEFAULT_SHLIB_MODE RTLD_NOW | RTLD_GLOBAL
// Use monotonic clock
#define ACE_HAS_CLOCK_GETTIME_MONOTONIC 1
// Turn on high-resolution/monotonic clock in TAO, CIAO, and DAnCE by default
#define TAO_USE_HR_TIME_POLICY_STRATEGY 1
#include "ace/config-linux.h"
#endif
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
use a link to a platform-specific file, simply state which one
(unless this isn't used in this case, e.g., with Microsoft Visual
C++)]:
Not sure which one is used, but shouldn't matter for my question
CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
(used by MPC when you generate your own makefiles):
ace_idl_dependencies = 1
boost = 0
ccm_direct_collocation = 1
ccm_lw = 1
ccm_noevent = 1
dds4ccm_ndds = 1
gen_ostream = 0
install_rpath = 0
ndds = 1
optimize_collocated_invocations = 1
stl = 1
xerces2 = 1
AREA/CLASS/EXAMPLE AFFECTED:
N/A
DOES THE PROBLEM AFFECT:
COMPILATION?
N/A
LINKING?
N/A
EXECUTION?
N/A
OTHER (please specify)?
N/A
SYNOPSIS:
Usage of CORBA::ORB_var orb in a component's auto-generated reactor() method)
DESCRIPTION:
The following code is auto-generated for a component's reactor() method:
ACE_Reactor * reactor = 0;
CORBA::Object_var ccm_object = this->ciao_context_->get_CCM_object();
if ( ! CORBA::is_nil(ccm_object.in()))
{
CORBA::ORB_var orb = ccm_object->_get_orb ();
if ( ! CORBA::is_nil(orb.in()))
{
reactor = orb->orb_core ()->reactor ();
}
}
...
Questions:
1. Since when it goes out of scope, CORBA::Object_var decrements the reference
count and releases the resource when it counts down to zero, why doesn't there
need to be a call to a _duplicate method on what is returned from the
get_CCM_object() and reactor() calls?
2. For a component's port that is typed to a DDS4CCM connector If you are using an
"_var" variable to hold the result from a get_connection_<port>_<basic port>() call,
is it correct to use _duplicate to ensure the object held in the ciao_context_ is
not prematurely freed?
3. Is it also required that _duplicate be used on similar get_connection_... calls for a CORBA client port?
REPEAT BY:
N/A
SAMPLE FIX/WORKAROUND:
N/A
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.isis.vanderbilt.edu/pipermail/ciao-users/attachments/20161103/8615e6c1/attachment.html>
More information about the ciao-users
mailing list