]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/dev.cpp
Agrego lista de cosas que faltan.
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.cpp
index 494d1887f78c9259f775820d881ba70e0ed8c999..d9465a68ad4de636dd715f8f4f2ae100ed5a0a94 100644 (file)
@@ -16,9 +16,12 @@ struct Frame
     char frame[1];
 };
 
     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)
 {
     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");
     que_id = msgget(key, 0666); // Debe estar previamente creada
     if (que_id == -1)
         throw std::runtime_error("No se pudo crear la cola");
@@ -37,8 +40,8 @@ void Dev::transmit(const std::string& data, const mac_type& mac)
     memcpy(f->frame, data.c_str(), data.size());
     int res = msgsnd(que_id, f, mtu + sizeof(size_t), 0);
 #ifdef DEBUG
     memcpy(f->frame, data.c_str(), data.size());
     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";
+    //std::cout << "Dev::transmit(msgtype/mac = " << f->mac << ", size = "
+    //    << f->size << ")\n";
 #endif
     free(f);
     if (res == -1)
 #endif
     free(f);
     if (res == -1)
@@ -59,8 +62,8 @@ std::string Dev::receive() throw (std::runtime_error)
     std::string s((char*) f->frame, f->size);
     free(f);
 #ifdef DEBUG
     std::string s((char*) f->frame, f->size);
     free(f);
 #ifdef DEBUG
-    std::cout << "Dev::receive(msgtype/mac = " << mac << ", size = "
-        << s.size() << ", data = " << s << ")\n";
+    //std::cout << "Dev::receive(msgtype/mac = " << mac << ", size = "
+    //    << s.size() << ")\n";
 #endif
     return s;
 }
 #endif
     return s;
 }