00001 /** 00002 * @file ModuleHandler.h 00003 * 00004 * Declaration of class ModuleHandler 00005 * 00006 * @author Max Risler 00007 * @author Martin Lötzsch 00008 */ 00009 00010 #ifndef __ModuleHandler_h_ 00011 #define __ModuleHandler_h_ 00012 00013 #include "ModuleSelector.h" 00014 00015 /** 00016 * @class ModuleHandler 00017 * 00018 * Manages runtime exhangeable modules. 00019 * 00020 * @author Max Risler 00021 * @author Martin Lötzsch 00022 */ 00023 class ModuleHandler : public MessageHandler 00024 { 00025 private: 00026 /** Pointers to all module selectors */ 00027 ModuleSelector *pModuleSelectors[SolutionRequest::numOfModules]; 00028 00029 public: 00030 /** Constructor */ 00031 ModuleHandler(); 00032 00033 /** 00034 * Returns pointer to selector module. 00035 * @param id id of module. 00036 */ 00037 ModuleSelector *pGetModuleSelector(SolutionRequest::ModuleID id) const; 00038 00039 /** 00040 * Set pointer to selector module. 00041 * @param id id of module. 00042 * @param module a pointer to the module selector 00043 */ 00044 void setModuleSelector(SolutionRequest::ModuleID id, 00045 ModuleSelector* module); 00046 00047 /** Returns the id of the selected solution for a module id */ 00048 SolutionRequest::ModuleSolutionID getSelectedSolution(SolutionRequest::ModuleID id) const; 00049 00050 /** Selects solution defined by solution in module id */ 00051 void selectSolution(SolutionRequest::ModuleID id, SolutionRequest::ModuleSolutionID solution); 00052 00053 /** Selects solutions as defined by a solution request */ 00054 void selectSolutions(SolutionRequest request); 00055 00056 /** 00057 * Called from a MessageQueue to distribute messages. 00058 * Use message.getMessageID to decide if the message is relavant for 00059 * the MesssageHandler derivate. 00060 * Use message.bin, message.text or message.config as In streams to get the data from. 00061 * @param message The message that can be read. 00062 * @return true if the message was read (handled). 00063 */ 00064 virtual bool handleMessage(InMessage& message); 00065 }; 00066 00067 00068 #endif //__ModuleHandler_h_ 00069 00070 /* 00071 * Change log : 00072 * 00073 * $Log: ModuleHandler.h,v $ 00074 * Revision 1.1.1.1 2004/05/22 17:37:19 cvsadm 00075 * created new repository GT2004_WM 00076 * 00077 * Revision 1.2 2004/01/21 14:31:58 loetzsch 00078 * Module Selectors create only the selected solution. 00079 * When the solution changes, the old solution is erased and the new 00080 * one ist created using createSolution(..) 00081 * 00082 * Revision 1.1 2003/10/07 10:13:24 cvsadm 00083 * Created GT2004 (M.J.) 00084 * 00085 * Revision 1.1.1.1 2003/07/02 09:40:29 cvsadm 00086 * created new repository for the competitions in Padova from the 00087 * tamara CVS (Tuesday 2:00 pm) 00088 * 00089 * removed unused solutions 00090 * 00091 * Revision 1.4 2002/09/25 10:25:13 loetzsch 00092 * removed the "executeVisionModules" variable 00093 * from SolutionRequest and ModuleHandler. 00094 * 00095 * Revision 1.3 2002/09/10 21:07:30 loetzsch 00096 * continued change of module/solution mechanisms 00097 * 00098 * Revision 1.2 2002/09/10 17:53:26 loetzsch 00099 * First draft of new Module/Solution Architecture 00100 * 00101 * Revision 1.1 2002/09/10 15:53:59 cvsadm 00102 * Created new project GT2003 (M.L.) 00103 * - Cleaned up the /Src/DataTypes directory 00104 * - Removed challenge related source code 00105 * - Removed processing of incoming audio data 00106 * - Renamed AcousticMessage to SoundRequest 00107 * 00108 * Revision 1.2 2002/06/04 00:12:45 loetzsch 00109 * added bool executeVisionModules 00110 * 00111 * Revision 1.1.1.1 2002/05/10 12:40:32 cvsadm 00112 * Moved GT2002 Project from ute to tamara. 00113 * 00114 * Revision 1.9 2002/02/08 18:36:03 risler 00115 * removed destructor again 00116 * 00117 * Revision 1.8 2002/02/08 17:48:21 risler 00118 * destructor added 00119 * 00120 * Revision 1.7 2002/01/20 13:00:18 risler 00121 * changed implementation of selecting default solution 00122 * 00123 * Revision 1.6 2002/01/19 12:43:16 risler 00124 * enabled SolutionRequest, changed HandleDebugMessage calls 00125 * 00126 * Revision 1.5 2002/01/17 14:35:48 risler 00127 * SolutionRequest added 00128 * 00129 * Revision 1.4 2001/12/10 17:47:10 risler 00130 * change log added 00131 * 00132 */