+ NameServer(std::istream& is, IPIn& ipin, IPOut& ipout, DevQue& req_que,
+ DevQue& res_que, DevQue& snd_que) throw (std::runtime_error);
+
+ /// Resuelve un nombre de forma directa (no recursiva)
+ ResolvProtoResponse resolv_direct(const Name& n);
+
+ /// Resuelve un nombre de forma recursiva
+ ResolvProtoResponse resolv_recursive(const Name& n);
+
+ /// Consulta a otro name server sobre un nombre
+ ResolvProtoResponse query(const Name&n, const IPAddr& ip);
+
+ /// Loop que recibe y carga los paquetes en las colas para ser procesados
+ void recv_loop();
+
+ /// Loop que envía los paquetes de la cola de envío
+ void send_loop();
+
+ /// Loop que procesa los requests
+ void req_loop();
+
+ private:
+ /// Resuelve un nombre de forma recursiva entrando a otros ns
+ ResolvProtoResponse resolv_recursive_r(const Name& n,
+ ResolvProtoResponse rpr);