]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/media.cpp
Mejora debug.
[z.facultad/75.74/practicos.git] / practicas / pipi / src / media.cpp
1 #include "media.h"
2 #ifdef DEBUG
3 #include <iostream>
4 #endif
5
6 Media::Media(key_t key) throw (std::runtime_error)
7 {
8     que_id = msgget(key, 0666); // Debe estar previamente creada
9     if (que_id == -1)
10         throw std::runtime_error("No se pudo crear la cola");
11 }
12
13 void Media::transmit(const Frame& frame)
14 {
15 #ifdef DEBUG
16     std::cout << "Media::transmit(msgtype/mac = " << *(((int*)&frame)+1)
17         << ", size = " << frame.size() << ", data = " << frame.data() << ")\n";
18 #endif
19     // HACK ASQUEROSO para pasarle por encima a la vtable... :-O~
20     if (msgsnd(que_id, ((int*)&frame)+1, frame.size(), 0) == -1)
21         throw std::runtime_error("Error al poner en la cola");
22 }
23
24 void Media::receive(Frame& frame)
25 {
26     // HACK ASQUEROSO para pasarle por encima a la vtable... :-O~
27     if (msgrcv(que_id, ((int*)&frame)+1, frame.size(), frame.mac(), 0) == -1)
28         throw std::runtime_error("Error al sacar de la cola");
29 #ifdef DEBUG
30     std::cout << "Media::receive(msgtype/mac = " << *(((int*)&frame)+1)
31         << ", size = " << frame.size() << ", data = " << frame.data() << ")\n";
32 #endif
33 }
34
35 // vim: set et sw=4 sts=4 :