-
Key: CORBA3-15
-
Legacy Issue Number: 3672
-
Status: closed
-
Source: International Business Machines ( Mr. Phil Adams)
-
Summary:
I am in the process of implementing Portable Interceptors within a C++
ORB,
and I would like to raise an issue for resolution regarding the semantics
of the
"register_initial_reference()" function, particularly with respect to the
memory
management of the object being registered.The interface for this function is as follows:
void register_initial_reference (
ObjectId id,
Object_ptr obj
);Within the Portable Interceptors specification, there is really no
information about
how the memory for the object should be managed. For example, does the
caller of
"register_initial_reference()" pass ownership of the object to the ORB, or
not?
Also, does the caller of "resolve_initial_references()" gain ownership of
the object
which is returned, or not?Here is my proposed resolution:
The fact that the "obj" parameter is a CORBA::Object implies that it is a
reference-counted
object. Therefore, it would make sense that when
"register_initial_reference()" is called, the
ORB performs a "_duplicate()" on the object to increment its reference
count (the ORB would
then hold its own reference count). The caller of
"register_initial_reference()" can decide
whether to call "release()" or retain its own reference count.Later, when "resolve_initial_references()" is called, the ORB would call
"_duplicate()" on the
object prior to returning it to the caller, thereby giving the caller its
own reference count.
The caller would then need to call "release()" when it is finished with
the object.When the ORB is deleted, it must clean up the lookup table of registered
objects. To do this,
it simply calls "release()" on each one, and if no one else holds a
reference count, then
the object is simply deleted.I would like the hear other people's thoughts on this, particularly those
who have done or are
working on a C++ implementation of PI. -
Reported: CPP 1.1 — Tue, 6 Jun 2000 04:00 GMT
-
Disposition: Resolved — CORBA 3.0.2
-
Disposition Summary:
see above
-
Updated: Fri, 6 Mar 2015 20:58 GMT
CORBA3 — Portable Interceptors / register_initial_reference()
- Key: CORBA3-15
- OMG Task Force: Core 2002 RTF