[Bug 918] New: exception support in rtt operation

http://bugs.orocos.org/show_bug.cgi?id=918

Summary: exception support in rtt operation
Product: RTT
Version: rtt-trunk
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P3
Component: Real-Time Toolkit (RTT)
AssignedTo: orocos-dev [..] ...
ReportedBy: mathieu [dot] gautier [..] ...
CC: orocos-dev [..] ...
Estimated Hours: 0.0

Created attachment 755
--> http://bugs.orocos.org/attachment.cgi?id=755
exception support patch

see thread : http://www.orocos.org/forum/rtt/rtt-dev/operation-and-c-exception

see the attached patch :

exception : propagate exceptions thrown while calling an operation.
exception : set the owner taskcontext or the engine executing the operation in
the exception state
corba : add the exception handling through the corba exception CCallError
tests : add tests for exceptions handling

[Bug 918] exception support in rtt operation

http://bugs.orocos.org/show_bug.cgi?id=918

Peter Soetens <peter [..] ...> changed:

What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |peter [..] ...

[Bug 918] exception support in rtt operation

Hi peter,
>
> I'm wondering however: is the owner EE different from the 'myengine' in
> LocalOperationCaller.hpp ? How can it be that 3 execution engines are
involved
> in a single operation ?

I just had a quick look, because I don't quite remember this part. There
are only two engines involved, but we can lose track of one of these
engines with remote operations.

Indeed, when a remote operation is called in ClientThread, the engines
'caller' and 'myengine' are equal. In this case we are unable to set the
callee in the exception state. So the 'ownerEngine' keep track of the
callee. It's not usefull in LocalOperation and ownerEngine is often null
in this case. But since, RemoteOperation uses LocalOperation the
mecanism is set in LocalOperationCaller (line 157-163).