module.h

00001 /*
00002         ~~~~~~~~~~~~
00003         ~ module.h ~
00004         ~~~~~~~~~~~~
00005 
00006 Funktionen zur Modulverwaltung. Ebenso finden sich hier die Grundfunktionen der
00007 Modulklasse.
00008 
00009 Dieser Quelltext ist ursprünglich Teil des Programmes Eukalyptos, welches zur
00010 Netzwerkfernsteuerung von Lego-RCX-2-Robotern dient und von Lutz Büch, Bastian
00011 Rieck und Carlos Franke im Rahmen eines Praktikums am Interdisziplinären 
00012 Zentrum für Wissenschaftliches Rechnen (IWR) der Universität Heidelberg 
00013 geschaffen wurde.
00014 
00015 */
00016 
00017 #ifndef MODULE_H
00018 #define MODULE_H
00019 
00020 #include <vector>
00021 
00022 using namespace std;
00023 
00025 const int MODULE_NAME_LENGTH = 30;
00026 
00030 class module
00031 {
00032         public:
00033 
00034                 /*
00035 
00036                 Momentan keine Verwendung.
00037 
00042                 int get_id( void )
00043                 {
00044                         return( id );
00045                 }
00046 
00047                 */
00048         
00049                 virtual int get_status( void ) = 0;
00050                 virtual char* get_name( void ) = 0;
00051 
00052         protected:
00053 
00054                 virtual int mod_load( void ) = 0;
00055                 virtual int mod_unload( void ) = 0;
00056                 virtual int handle_msg( const char* msg ) = 0;
00057 
00058                 /*
00059                 Momentan keine Verwendung. Siehe oben.
00060 
00061                 int id;
00062                 */
00063 
00065                 friend class module_master;
00066 };
00067 
00068 
00072 struct module_info
00073 {
00074         char name[ MODULE_NAME_LENGTH + 1 ]; 
00075         module* ptr;
00076         
00078         int id; 
00079 };
00080         
00085 class module_master
00086 {
00087         public:
00088                         
00089                 int register_module( module *m );       
00090                 int unregister_module( module *m );     
00091                 int unload_all( void );                 
00092 
00093                 int broadcast( const char* msg );
00094 
00095                 module* get_module( const char* name, int id = -1 );
00096                 module* get_module( int id );
00097 
00098                 static module_master& ptr( void );
00099 
00100         private:
00101                 module_master( void );
00102                 module_master( const module_master& );
00103 
00104                 vector<module_info> db;
00105 };
00106 
00107 #endif

Generated on Sun Sep 3 23:47:22 2006 by  doxygen 1.4.7