OpenWalnut  1.4.0
WModuleConnectorSignals.h
00001 //---------------------------------------------------------------------------
00002 //
00003 // Project: OpenWalnut ( http://www.openwalnut.org )
00004 //
00005 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
00006 // For more information see http://www.openwalnut.org/copying
00007 //
00008 // This file is part of OpenWalnut.
00009 //
00010 // OpenWalnut is free software: you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as published by
00012 // the Free Software Foundation, either version 3 of the License, or
00013 // (at your option) any later version.
00014 //
00015 // OpenWalnut is distributed in the hope that it will be useful,
00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 // GNU Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public License
00021 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
00022 //
00023 //---------------------------------------------------------------------------
00024 
00025 #ifndef WMODULECONNECTORSIGNALS_H
00026 #define WMODULECONNECTORSIGNALS_H
00027 
00028 #include <boost/signals2/signal.hpp>
00029 #include <boost/function.hpp>
00030 
00031 class WModuleConnector;
00032 
00033 /**
00034  * Enum of all possible signals between WModuleConnector instances.
00035  * TODO(ebaum): Replace this by an automatic mapping class also able to allow varying function signatures.
00036  */
00037 typedef enum
00038 {
00039 CONNECTION_ESTABLISHED,                             // a connection has been established
00040 CONNECTION_CLOSED,                                  // a connection has been closed
00041 DATA_CHANGED                                        // data on an output connector has been changed
00042 }
00043 MODULE_CONNECTOR_SIGNAL;
00044 
00045 // **************************************************************************************************************************
00046 // Types
00047 // **************************************************************************************************************************
00048 
00049 /**
00050  * Signal transmitting sender and receiver.
00051  *
00052  * \param boost::shared_ptr<WModuleConnector> this should be the receiver, depending on specific signal.
00053  * \param boost::shared_ptr<WModuleConnector> this should be the sender, depending on specific signal.
00054  *
00055  */
00056 typedef boost::function<void ( boost::shared_ptr<WModuleConnector>,
00057                                boost::shared_ptr<WModuleConnector> )> t_GenericSignalHandlerType;
00058 
00059 /**
00060  * Generic signal type used in the most signals involving a sender and receiver.
00061  *
00062  * \param recv The connector receiving the signal.
00063  * \param sender The counterpart (sender).
00064  */
00065 typedef boost::signals2::signal<void ( boost::shared_ptr<WModuleConnector>,
00066                                        boost::shared_ptr<WModuleConnector> )>  t_GenericSignalType;
00067 
00068 #endif  // WMODULECONNECTORSIGNALS_H
00069