]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/resolvproto.h
Se generaliza el devque para seguir (ab)usándolo como cola y poder pedir de
[z.facultad/75.74/practicos.git] / practicas / pipi / src / resolvproto.h
index ab41bf9408b71a2ef46db9deaae9d0d935b176de..50ec1719c10db88215f68079a5a51a772b41efd0 100644 (file)
@@ -2,6 +2,8 @@
 #define _RESOLVPROTO_H_
 
 #include "ipaddr.h"
+#include "ipin.h"
+#include "ipout.h"
 #include <string>
 #include <vector>
 #include <stdexcept>
@@ -27,14 +29,20 @@ struct ResolvProtoRequest
     std::string name;
 
     /// Constructores
-    ResolvProtoRequest(int fd);
-    ResolvProtoRequest(std::string name, uint8_t query_type = QT_RECURSIVE);
+    ResolvProtoRequest(std::string name, uint8_t query_type);
+    ResolvProtoRequest(std::string buf);
 
     /// Envía por socket
-    void send(int sockfd) const throw (std::runtime_error);
+    void send(IPOut& ipo) const throw (std::runtime_error);
 
     /// Recibe por socket
-    void recv(int sockfd) throw (std::runtime_error);
+    void recv(IPIn& ipi) throw (std::runtime_error);
+
+    /// Obtiene tamaño del paquete
+    size_t packet_size() const;
+
+    /// Convierte a un string
+    operator std::string () const;
 
 };
 
@@ -69,15 +77,21 @@ struct ResolvProtoResponse
 
     /// Constructores
     ResolvProtoResponse();
-    ResolvProtoResponse(int fd);
     ResolvProtoResponse(ret_t ret, uint32_t ttl = 0,
             const ipvec_t& ips = ipvec_t());
+    ResolvProtoResponse(std::string buf);
 
     /// Envía por socket
-    void send(int sockfd) const throw (std::runtime_error);
+    void send(IPOut& ipo) const throw (std::runtime_error);
 
     /// Recibe por socket
-    void recv(int sockfd) throw (std::runtime_error);
+    void recv(IPIn& ipi) throw (std::runtime_error);
+
+    /// Obtiene tamaño del paquete
+    size_t packet_size() const;
+
+    /// Convierte a un string
+    operator std::string () const;
 
 };