summaryrefslogtreecommitdiff
path: root/i/simulotron/src/aiguillage/aiguillage.cc
diff options
context:
space:
mode:
authorhaller2006-01-21 21:10:23 +0000
committerhaller2006-01-21 21:10:23 +0000
commita8cd31b9681938b1cea0d02e884962fd8f114208 (patch)
treeeeccb77227e02d919f75d9a97ea3c7557d2be2fc /i/simulotron/src/aiguillage/aiguillage.cc
parent270ede560382bbce481b18895276d9802ae931ee (diff)
- ajout de quelques structures de données
- importation de la class nonCopyable et utilisation dans quelques classes - création d'une class exception simulotron_exception - ajout d'un paramètre "bloquant" pour recevoir une GS - modification de la valeur de retour des fonction servant à récupérer une GS - Mise en place de la poignée de main lors de la connection d'un module au hub - Ajout d'un message template pour les message vide - suppression des fonction (get|put)Char et getFD de la classe socket - modification de la fonction GSMessage::getString à deux arguments - ajout d'un test_hub - ajout de la class ComH (un peu comme ComC mais coté hub)
Diffstat (limited to 'i/simulotron/src/aiguillage/aiguillage.cc')
-rw-r--r--i/simulotron/src/aiguillage/aiguillage.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/i/simulotron/src/aiguillage/aiguillage.cc b/i/simulotron/src/aiguillage/aiguillage.cc
index 6292ce7..3abd5ab 100644
--- a/i/simulotron/src/aiguillage/aiguillage.cc
+++ b/i/simulotron/src/aiguillage/aiguillage.cc
@@ -25,6 +25,7 @@
#include "aiguillage/aiguillage.hh"
#include "gs/gs_message.hh"
+#include "utils/simulotron_exception.hh"
#include <stdexcept>
@@ -59,25 +60,25 @@ Aiguillage::send(const GSMessage & gsm, const std::string & source,
}
/// Reçoie un paquet du réseau et supprime les infos src et dest du GSM
-int
-Aiguillage::receive(GSMessage & gsm, std::string & source, std::string & dest)
+bool
+Aiguillage::receive(GSMessage & gsm, std::string & source, std::string & dest, bool bloquant)
{
std::string tmp;
- if(gst_.getGS(gsm) != 0)
- return -1;
+ if(!gst_.getGS(gsm, bloquant))
+ return false;
gsm.getString(tmp, 8);
source = tmp.c_str();
gsm.getString(tmp, 8);
dest = tmp.c_str();
gsm.delBeforeIt();
- return 0;
+ return true;
}
void
Aiguillage::setName(const std::string & name)
{
if(name.size() > MAX_SIZE_NAME)
- throw std::runtime_error("Le nom est trop long!!");
+ throw simulotron_exception("Aiguillage", "Le nom est trop long!!");
name_ = name;
name_.append(MAX_SIZE_NAME - name.size(), '\0');
}