]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/dev.h
Primera aproximación al cache y a la resolución de nombres.
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.h
index f8bd771719dbfeb16aac3e8f0abac0ef01b60551..f06e8b12e094838ea235ce097e9427ebecec20d5 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <stdexcept>
 
-#define DEV_DEFAULT_KEY 0x1abcdef1
+#define DEV_MAX_MTU 1500
 
 /// Dispositivo de red (capa de enlace)
 struct Dev
@@ -18,20 +18,25 @@ struct Dev
     /// MTU
     size_t mtu;
 
-    /// Identificador de la cola a usar
-    int que_id;
-
     /// Constructor
-    Dev(mac_type mac, size_t mtu = 1500, key_t key = DEV_DEFAULT_KEY)
-        throw (std::runtime_error);
+    Dev(mac_type mac, size_t mtu = DEV_MAX_MTU)
+        throw (std::runtime_error, std::logic_error):
+            mac(mac), mtu(mtu)
+    {
+        if (mtu > DEV_MAX_MTU)
+            throw std::logic_error("MTU más grande que DEV_MAX_MTU");
+    }
 
     /// Envía un frame
-    void transmit(const std::string& data, const mac_type& mac)
-        throw (std::runtime_error, std::logic_error);
+    virtual void transmit(const std::string& data, const mac_type& mac)
+        throw (std::runtime_error, std::logic_error) = 0;
 
     /// Recibe un frame
-    std::string receive()
-        throw (std::runtime_error);
+    virtual std::string receive()
+        throw (std::runtime_error) = 0;
+
+    /// Destructor virtual por si las moscas
+    virtual ~Dev() {}
 
     // Nada de andar copiando placas...
     private: