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