]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/dev.h
Se refactoriza y simplifica la capa física. Se deja sólo el dispositivo de red
[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
8 /// Dispositivo de red (capa de enlace)
9 struct Dev
10 {
11
12     /// Tipo de la mac
13     typedef long mac_type;
14
15     /// Dirección MAC
16     mac_type mac;
17
18     /// MTU
19     size_t mtu;
20
21     /// Identificador de la cola a usar
22     int que_id;
23
24     /// Constructor
25     Dev(mac_type mac, size_t mtu = 1500, key_t key = DEV_DEFAULT_KEY)
26         throw (std::runtime_error);
27
28     /// Envía un frame
29     void transmit(const std::string& data, const mac_type& mac)
30         throw (std::runtime_error, std::logic_error);
31
32     /// Recibe un frame
33     std::string receive()
34         throw (std::runtime_error);
35
36     // Nada de andar copiando placas...
37     private:
38     Dev(const Dev&);
39     Dev& operator=(const Dev&);
40
41 };
42
43 #endif // _DEV_H_
44
45 // vim: set et sw=4 sts=4 :