LifeCycle services: remove()

Fred Eisele feisele@diecas.gmr.com
Mon, 02 Feb 1998 13:11:23 -0500


I have a very basic question regarding the implementation of the
<CosLifeCycle::LifeCycleObject::remove() > function.

I believe that the <CosLifeCycle::LifeCycleObject> is inherited by
the appropriate interface, call it <interface X>, as follows:

         interface X : ::CosLifeCycle::LifeCycleObject { string y; };

Now there is on obligation on the implementation side
for the X_Impl object to "know" how to <remove()> itself.
How is this intended to be done?
Does the implementation call its own destructor? ( delete this; )
Is there a safe way to do this?
In your example you have the following:

void
 _lc_sk_EchoLag::_remove()
 {
    if (_home_EchoLag->is_proxy())
      omniLC::_wrap_proxy::_reset_wraps(this);
     _get_linfo()->reportRemove();
 }

Or, is the intent to call the object's <delete()> function directly?
Or, is it the BOA's job to call the delete:

  CORBA::BOA::getBOA()->dispose(this);

Is it appropriate for an object to delete itself if it returns void?
Are you playing some game where the object returns first and
then has itself deleted (by the BOA)?

If this is in covered in one of the documents, sorry I missed it.
Do you know of where to obtain documentation on a "correct/complete"
implementation of the LifeCycle service?

Fred