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 00028 OperationCallerInterface(); 00029 00030 OperationCallerInterface(OperationCallerInterface const& orig); 00031 00032 virtual ~OperationCallerInterface(); 00033 00038 virtual bool ready() const = 0; 00039 00045 void setOwner(ExecutionEngine* ee); 00046 00054 void setCaller(ExecutionEngine* ee); 00055 00064 bool setThread(ExecutionThread et, 00065 ExecutionEngine* executor); 00066 00067 ExecutionThread getThread() const { return met; } 00068 00074 void reportError(); 00075 00079 bool isSend() { return met == OwnThread && myengine != caller; } 00080 00081 ExecutionEngine* getMessageProcessor() const; 00082 00083 protected: 00084 ExecutionEngine* myengine; 00085 ExecutionEngine* caller; 00086 ExecutionThread met; 00087 }; 00088 } 00089 } 00090 00091 #endif