]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/dev.h
Agrego lista de cosas que faltan.
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.h
1 #ifndef _DEV_H_
2 #define _DEV_H_
3
4 #include <stdexcept>
5
6 #define DEV_DEFAULT_KEY 0x1abcdef1
7 #define DEV_MAX_MTU 1500
8
9 /// Dispositivo de red (capa de enlace)
10 struct Dev
11 {
12
13     /// Tipo de la mac
14     typedef long mac_type;
15
16     /// Dirección MAC
17     mac_type mac;
18
19     /// MTU
20     size_t mtu;
21
22     /// Identificador de la cola a usar
23     int que_id;
24
25     /// Constructor
26     Dev(mac_type mac, size_t mtu = DEV_MAX_MTU, key_t key = DEV_DEFAULT_KEY)
27         throw (std::runtime_error, std::logic_error);
28
29     /// Envía un frame
30     void transmit(const std::string& data, const mac_type& mac)
31         throw (std::runtime_error, std::logic_error);
32
33     /// Recibe un frame
34     std::string receive()
35         throw (std::runtime_error);
36
37     // Nada de andar copiando placas...
38     private:
39     Dev(const Dev&);
40     Dev& operator=(const Dev&);
41
42 };
43
44 #endif // _DEV_H_
45
46 // vim: set et sw=4 sts=4 :