Please report new issues athttps://github.com/DOCGroup
work_pending() and perform_work() simply forward to the Reactor. However, they: (a) Don't open() the ORB (b) Ignore the ORB shutdown state (c) Don't participate in the leader-follower model Simply put, perform_work() should mimic the ORB::run() as far as checking ORB state is concerned. Currently, this is broken!
Just some more notes: the spec does not allow perform_work() to block forever, just to perform "one unit of work" which is implementation defined. IMHO the correct implementation is to define a user configurable timeout for both work_pending() and perform_work(), that should not be hard to implement using the timeout features in the reactor.
Irfan has shown interest in this problem, he should be point man.
work_pending() and perform_work() now make sure that the ORB hasn't been shutdown before doing anything else. See: ChangeLogTag:Fri Aug 27 17:06:54 1999 Ossama Othman <othman@cs.wustl.edu>
On second thought, the shutdown check I implemented should be made thread safe. Currently, it is not!
I'll work on this soon... (famous last words :)
*** Bug 200 has been marked as a duplicate of this bug. ***
Just a brief note, this bug is closely related to 347, it is not the same thing, and i cannot figure the exact relationship (thus i'm hesitant to introduce the dependency to bugzilla). But the fact is that whenever this one gets fixed is a good chance to fix the other one too.
ChangeLogTag: Thu Jan 13 20:11:55 2000 Irfan Pyarali <irfan@cs.wustl.edu>
*** Bug 585 has been marked as a duplicate of this bug. ***