Hello,

I incorporated the account3 example to use the imr for some project I am working on. My question is about the ServantActivator::incarnate() function. In the account3 example it creates a new Account object with new and returns the pointer to it. But in my project I am not sure whether my object ( 'camera_impl', pointed to and created by a surrounding object called 'corbamanager' ) exists already. Sure, I could test via an if() statement in the incarnate function whether the corbamanager and the camera_impl object exist already, but what if not? The incarnate function has to return a valid pointer I think, and it would be of no use if the code in the corbamanager object which invokes the camera_impl constructor is executed afterwards. So the problem I have is that the camera_impl object currently is created on server startup in the corbamanager object. When I start up the server the first time it creates the object for itself without the ServantActivator mechanism. But when the server is down and incarnate is invoked, can I be sure that the code that creates the object (in the corbamanager object) is executed before or after or concurrently? What is the order in execution? - I think at first the server (and with it the "corbamanager" object) is started by the persistent POA and then the incarnate function is invoked? - But how could the POA decide whether the server is finnished with starting up and when to invoke the incarnate function? Or is it called as the very first function before the server is started? So the problem is when requests come via the POA and the object is incarnated on demand, possibly twice, because the server starts and creates it, and one more time the incarnate function. And invoking the incarnate function by hand in the corbamanager object to make sure that this is the only place the camera_impl object could be created either by my corbamanager object or by the POA and testing whether the camera_impl object already was created via an if() statement, is this the solution? So the first one who enters incarnate() creates the camer_impl object? What about concurrency (reentrance of the function), do I have to do thread synchronization so that incarnate is not called concurrently by both the POA and my 'corbamanager' object?

You see, I'm a little puzzled and would be very thankful for any hint.

Friendly greetings,

Yours

Peter.
_______________________________________________
Mico-devel mailing list
[email protected]
http://www.mico.org/mailman/listinfo/mico-devel

Reply via email to