X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/blobdiff_plain/093ef819f410add240cf97b72f9e7dcab5abd16c..49f488eb5e757db401a81bc40a30a84d1abcaf88:/practicas/pipi/src/dev.cpp?ds=sidebyside diff --git a/practicas/pipi/src/dev.cpp b/practicas/pipi/src/dev.cpp index 494d188..932df00 100644 --- a/practicas/pipi/src/dev.cpp +++ b/practicas/pipi/src/dev.cpp @@ -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; }