]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/dev.h
Mejora salida (agrega IP para saber de que proceso se trata).
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.h
index d0acea653a6a170a099084c740669ea7880c3821..129f78f94eb4e716ec7b45a335111ca1905e290c 100644 (file)
@@ -1,32 +1,38 @@
 #ifndef _DEV_H_
 #define _DEV_H_
 
-#include "frame.h"
-#include "media.h"
 #include <stdexcept>
 
+#define DEV_DEFAULT_KEY 0x1abcdef1
+#define DEV_MAX_MTU 1500
+
 /// Dispositivo de red (capa de enlace)
 struct Dev
 {
 
+    /// Tipo de la mac
+    typedef long mac_type;
+
     /// Dirección MAC
-    Frame::mac_type mac;
+    mac_type mac;
+
+    /// MTU
+    size_t mtu;
 
-    /// Medio físico
-    Media& media;
+    /// Identificador de la cola a usar
+    int que_id;
 
     /// Constructor
-    Dev(const Frame::mac_type& mac, Media& media):
-        mac(mac), media(media)
-    {}
+    Dev(mac_type mac, size_t mtu = DEV_MAX_MTU, key_t key = DEV_DEFAULT_KEY)
+        throw (std::runtime_error, std::logic_error);
 
     /// Envía un frame
-    void send(const Frame& frame) throw (std::runtime_error)
-    { media.transmit(frame); }
+    void transmit(const std::string& data, const mac_type& mac)
+        throw (std::runtime_error, std::logic_error);
 
     /// Recibe un frame
-    void recv(Frame& frame) throw (std::runtime_error)
-    { media.receive(frame); }
+    std::string receive()
+        throw (std::runtime_error);
 
     // Nada de andar copiando placas...
     private: