]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi-2da-entrega/src/devtcp.h
Tag de 2da entrega.
[z.facultad/75.74/practicos.git] / practicas / pipi-2da-entrega / src / devtcp.h
1 #ifndef _DEVTCP_H_
2 #define _DEVTCP_H_
3
4 #include "dev.h"
5 #include <map>
6 #include <stdint.h>
7 #include <sys/poll.h>
8
9 #define DEVTCP_DEFAULT_PORT 65000
10 #define DEVTCP_MAX_CONN 16
11
12 /// Dispositivo de red (capa de enlace) implementado con TCP
13 struct DevTCP: Dev
14 {
15
16     /// Puerto en el cual escucha por conexiones
17     uint16_t port;
18
19     /// Información para poll sobre los fds
20     pollfd pfds[DEVTCP_MAX_CONN];
21     size_t pfds_size;
22
23     /// Mapa con el fd que corresponde a la conexión saliente con cada host
24     std::map< mac_type, int > tx_pool;
25
26     /// Constructor
27     DevTCP(mac_type mac, uint16_t port = DEVTCP_DEFAULT_PORT,
28             size_t mtu = DEV_MAX_MTU)
29         throw (std::runtime_error, std::logic_error);
30
31     /// Envía un frame
32     void transmit(const std::string& data, const mac_type& mac)
33         throw (std::runtime_error, std::logic_error);
34
35     /// Recibe un frame
36     std::string receive()
37         throw (std::runtime_error);
38
39 };
40
41 #endif // _DEVTCP_H_
42
43 // vim: set et sw=4 sts=4 :