]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/dev.cpp
Se cambia el logueo de paquetes dropeados a std::cerr para diferenciar de
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.cpp
index 494d1887f78c9259f775820d881ba70e0ed8c999..932df00036d3f9f9a93075fa80809efc872ea1c3 100644 (file)
@@ -16,9 +16,12 @@ struct Frame
     char frame[1];
 };
 
-Dev::Dev(mac_type mac, size_t mtu, key_t key) throw (std::runtime_error):
+Dev::Dev(mac_type mac, size_t mtu, key_t key)
+    throw (std::runtime_error, std::logic_error):
     mac(mac), mtu(mtu)
 {
+    if (mtu > DEV_MAX_MTU)
+        throw std::logic_error("MTU más grande que DEV_MAX_MTU");
     que_id = msgget(key, 0666); // Debe estar previamente creada
     if (que_id == -1)
         throw std::runtime_error("No se pudo crear la cola");
@@ -38,7 +41,7 @@ void Dev::transmit(const std::string& data, const mac_type& mac)
     int res = msgsnd(que_id, f, mtu + sizeof(size_t), 0);
 #ifdef DEBUG
     std::cout << "Dev::transmit(msgtype/mac = " << f->mac << ", size = "
-        << f->size << ", data = " << f->frame << ")\n";
+        << f->size << ")\n";
 #endif
     free(f);
     if (res == -1)
@@ -60,7 +63,7 @@ std::string Dev::receive() throw (std::runtime_error)
     free(f);
 #ifdef DEBUG
     std::cout << "Dev::receive(msgtype/mac = " << mac << ", size = "
-        << s.size() << ", data = " << s << ")\n";
+        << s.size() << ")\n";
 #endif
     return s;
 }