-
Looking at the etherealize()
implementation
-
etherealize() gets the same parameters as incarnate() plus
-
the servant to deactivate
-
a cleanup flag, set to true if the POA is being deactivated
-
if cleanup is true, an active flag.
-
set to true if threads are still present in the Servant.
-
happens if the POA was not be able to wait for the threads to drain
-
This implementation can't handle clean up, hence the assert
-
Tell servant to write to stable storage if it still exists
-
This makes servant code simpler since no concurrent state access when writing.
-
Remove servant from our active map
-
Delete the servant as it is no longer needed.
-
If we ensure deactivation happens fast enough we achieve our performance goal
of limiting the number of servants in memory
-
The current deactivates only on object deletion or the command line client
|