summaryrefslogtreecommitdiff
path: root/i/simulotron/src/hub/hub.hh
diff options
context:
space:
mode:
Diffstat (limited to 'i/simulotron/src/hub/hub.hh')
-rw-r--r--i/simulotron/src/hub/hub.hh39
1 files changed, 35 insertions, 4 deletions
diff --git a/i/simulotron/src/hub/hub.hh b/i/simulotron/src/hub/hub.hh
index 40ddc62..e91f8d0 100644
--- a/i/simulotron/src/hub/hub.hh
+++ b/i/simulotron/src/hub/hub.hh
@@ -25,17 +25,48 @@
*
* }}} */
+#include "hub/comh.hh"
+#include "socket/socket_server.hh"
+
+#include <list>
+
+class GSMessage;
+
class Hub
{
private:
- TimeH timeh_;
- Orders ordres_;
+ /// Horloge de simulation
+ long long int timeh_;
+ /// Listes des modules conectées au hub
+ std::list<ComH> modules_;
+ /// Socket serveur pour la connection
SocketServer socket_;
+ /// Liste des modules attendu
+ std::list<std::string> modAwaited_;
+ /// Drapeau pour sortir de la boucle
+ bool isRunning;
public:
/// Constructeur
- Hub(void);
+ Hub(std::string & address, int port);
+ /// Lancement du hub
+ void start(void);
+ private:
/// Initialisation
- Init(void);
+ void init(void);
+ /// Attend et initialise la communication avec les modules
+ void waitConnection(void);
+ /// Demarre le travail de hub du hub
+ void startLoop(void);
+ /// Traite les messages des modules
+ void processModules(void);
+ /// Traite les message d'un modules
+ void processModule(const std::list<ComH>::iterator & it);
+ /// Traite les wait des modules et fait avancer l'horloge si besoin
+ void processWaits(void);
+ /// Traite les règles d'arret du Hub
+ void processStoppingRules(void);
+ /// Se charge de faire se qu'il faut avec les messages
+ void laPoste (const GSMessage & gsm, const std::string & source, const std::string & dest, int msgId);
};
#endif //HUB_HH