00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef ORO_INPUT_PORT_INTERFACE_HPP
00040 #define ORO_INPUT_PORT_INTERFACE_HPP
00041
00042 #include <string>
00043 #include "PortInterface.hpp"
00044 #include "ChannelElement.hpp"
00045 #include "../internal/rtt-internal-fwd.hpp"
00046 #include "../internal/ConnectionManager.hpp"
00047 #include "../internal/Signal.hpp"
00048 #include "../base/DataSourceBase.hpp"
00049
00050 namespace RTT
00051 { namespace base {
00052
00053
00058 class RTT_API InputPortInterface : public PortInterface
00059 {
00060 public:
00061 typedef internal::Signal<void(PortInterface*)> NewDataOnPortEvent;
00062 typedef NewDataOnPortEvent::SlotFunction SlotFunction;
00063
00064 protected:
00065 internal::ConnectionManager cmanager;
00066 ConnPolicy default_policy;
00067 NewDataOnPortEvent* new_data_on_port_event;
00068
00069 InputPortInterface(const InputPortInterface& orig);
00070 public:
00071
00072 InputPortInterface(std::string const& name, ConnPolicy const& default_policy = ConnPolicy());
00073
00074 virtual ~InputPortInterface();
00075
00079 void clear();
00080
00081 ConnPolicy getDefaultPolicy() const;
00082
00083 virtual bool addConnection(internal::ConnID* port_id, ChannelElementBase::shared_ptr channel_input, ConnPolicy const& policy = ConnPolicy() );
00084
00093 virtual bool removeConnection(internal::ConnID* cid);
00094
00099 virtual DataSourceBase* getDataSource() = 0;
00100
00106 virtual FlowStatus read(DataSourceBase::shared_ptr source, bool copy_old_data = true);
00107
00111 virtual void disconnect();
00112
00116 virtual bool disconnect(PortInterface* port);
00117
00118
00120 virtual bool connected() const;
00121
00130 virtual bool channelReady(base::ChannelElementBase::shared_ptr channel);
00131
00135 NewDataOnPortEvent* getNewDataOnPortEvent();
00136
00137 virtual bool connectTo(PortInterface* other, ConnPolicy const& policy);
00138
00139 virtual bool connectTo(PortInterface* other);
00140
00141 virtual const internal::ConnectionManager* getManager() const { return &cmanager; }
00142 };
00143
00144 }}
00145
00146 #endif