25 #ifndef WMODULECONNECTOR_H
26 #define WMODULECONNECTOR_H
31 #include <boost/shared_ptr.hpp>
32 #include <boost/thread.hpp>
33 #include <boost/signals2/signal.hpp>
34 #include <boost/signals2/connection.hpp>
35 #include <boost/bind.hpp>
38 #include "WModuleCombinerTypes.h"
39 #include "WModuleConnectorSignals.h"
41 #include "WExportKernel.h"
50 class OWKERNEL_EXPORT
WModuleConnector:
public boost::enable_shared_from_this<WModuleConnector>
60 typedef boost::shared_ptr< WModuleConnector >
SPtr;
65 typedef boost::shared_ptr< const WModuleConnector >
ConstSPtr;
74 WModuleConnector( boost::shared_ptr< WModule > module, std::string name=
"", std::string description=
"" );
86 boost::shared_ptr< WModule > getModule()
const;
94 virtual void disconnect( boost::shared_ptr<WModuleConnector> con,
bool removeFromOwnList =
true );
99 virtual void disconnectAll();
111 virtual void connect( boost::shared_ptr<WModuleConnector> con );
123 bool isConnectedTo( boost::shared_ptr<WModuleConnector> con );
130 unsigned int isConnected();
142 virtual boost::signals2::connection subscribeSignal( MODULE_CONNECTOR_SIGNAL signal, t_GenericSignalHandlerType notifier );
149 const std::string getDescription()
const;
156 void setDescription( std::string desc );
163 const std::string getName()
const;
171 const std::string getCanonicalName()
const;
178 void setName( std::string name );
187 virtual bool connectable( boost::shared_ptr<WModuleConnector> con ) = 0;
195 WCombinerTypes::WOneToOneCombiners getPossibleDisconnections();
202 boost::shared_ptr< WModuleInputConnector > toInputConnector();
209 boost::shared_ptr< WModuleOutputConnector > toOutputConnector();
216 virtual bool isInputConnector()
const = 0;
223 virtual bool isOutputConnector()
const = 0;
244 virtual void connectSignals( boost::shared_ptr<WModuleConnector> con );
251 virtual void disconnectSignals( boost::shared_ptr<WModuleConnector> con );
262 virtual const t_GenericSignalHandlerType getSignalHandler( MODULE_CONNECTOR_SIGNAL signal );
280 virtual void notifyConnectionEstablished( boost::shared_ptr<WModuleConnector> here, boost::shared_ptr<WModuleConnector> there );
288 virtual void notifyConnectionClosed( boost::shared_ptr<WModuleConnector> here, boost::shared_ptr<WModuleConnector> there );
313 #endif // WMODULECONNECTOR_H