Orocos Real-Time Toolkit  2.6.0
OperationCallerInterface.hpp
00001 #ifndef ORO_OPERATION_CALLER_INTERFACE_HPP
00002 #define ORO_OPERATION_CALLER_INTERFACE_HPP
00003 
00004 #include "../rtt-fwd.hpp"
00005 #include "DisposableInterface.hpp"
00006 #include "OperationBase.hpp"
00007 
00008 namespace RTT
00009 {
00010     namespace base
00011     {
00015         struct RTT_API OperationCallerInterface: public DisposableInterface
00016         {
00021             typedef boost::shared_ptr<OperationCallerInterface> shared_ptr;
00022 
00023             OperationCallerInterface();
00024 
00025             OperationCallerInterface(OperationCallerInterface const& orig);
00026 
00027             virtual ~OperationCallerInterface();
00028 
00033             virtual bool ready() const = 0;
00034 
00040             void setOwner(ExecutionEngine* ee);
00041 
00050             void setExecutor(ExecutionEngine* ee);
00051 
00059             void setCaller(ExecutionEngine* ee);
00060 
00069             bool setThread(ExecutionThread et,
00070                            ExecutionEngine* executor);
00071 
00077             void reportError();
00078 
00082             bool isSend() { return met == OwnThread && myengine != caller; }
00083         protected:
00084             ExecutionEngine* myengine;
00085             ExecutionEngine* caller;
00086             ExecutionEngine* ownerEngine;
00087             ExecutionThread met;
00088         };
00089     }
00090 }
00091 
00092 #endif