]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi-2da-entrega/src/devque.h
Tag de 2da entrega.
[z.facultad/75.74/practicos.git] / practicas / pipi-2da-entrega / src / devque.h
1 #ifndef _DEVQUE_H_
2 #define _DEVQUE_H_
3
4 #include "dev.h"
5
6 #define DEVQUE_DEFAULT_KEY 0x1abcdef1
7
8 /// Dispositivo de red (capa de enlace) implementado con una cola
9 struct DevQue: Dev
10 {
11
12     /// Identificador de la cola a usar
13     int que_id;
14
15     /// Constructor
16     DevQue(mac_type mac, key_t key = DEVQUE_DEFAULT_KEY,
17             size_t mtu = DEV_MAX_MTU)
18         throw (std::runtime_error, std::logic_error);
19
20     /// Envía un frame
21     void transmit(const std::string& data, const mac_type& mac)
22         throw (std::runtime_error, std::logic_error);
23
24     /// Recibe un frame
25     std::string receive()
26         throw (std::runtime_error);
27
28     /// Recibe un frame para el tipo de mac especificado, si es 0 recibe
29     /// cualquier y guarda en esa mac la dirección.
30     std::string receive(mac_type& mac)
31         throw (std::runtime_error);
32
33     /// Indica cuantos elementos hay en la cola
34     size_t size() const;
35
36     /// Indica si está vacía la cola
37     bool empty() const;
38
39 };
40
41 #endif // _DEVQUE_H_
42
43 // vim: set et sw=4 sts=4 :