summaryrefslogtreecommitdiff
path: root/i/simulotron/src/aiguillage/aiguillage.cc
diff options
context:
space:
mode:
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');
}