]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
- Se agrega una funcion templateada to() para convertir de un tipo de dato
authorLeandro Lucarella <llucax@gmail.com>
Wed, 19 Nov 2003 02:26:49 +0000 (02:26 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Wed, 19 Nov 2003 02:26:49 +0000 (02:26 +0000)
  arbitrario a otro a traves de un stringstream (similar a String::to()).
- Se usa la nueva funcion en varios lugares.

Server/include/plaqui/server/string.h
Server/src/httpmessage.cpp
Server/src/string.cpp
Server/tests/client_test.cpp
Server/tests/receiver_test.cpp
Server/tests/server_test.cpp

index 41e83acd70ef5b3bd7f5095e41ae259587901a52..f29e1b407beec032a12b2c740c1d5073e099b096 100644 (file)
@@ -36,6 +36,21 @@ namespace PlaQui {
 
 namespace Server {
 
 
 namespace Server {
 
+       /**
+        * Convierte de un tipo a otro (de p1 a p2) a través de un stringstream.
+        *
+        * \param p1 Parámetro origen.
+        * \param p1 Parámetro destino, al que se quiere convertir.
+        *
+        * \return Referencia a p2.
+        */
+       template < class T1, class T2 > static T2& to(const T1& p1, T2& p2) {
+               std::stringstream ss(p1);
+               ss << p1;
+               ss >> p2;
+               return p2;
+       }
+
        /// Conexión.
        class String: public std::string {
 
        /// Conexión.
        class String: public std::string {
 
index 578f563645ffeb8b6a41a02435d3a0daa1db5b23..c97da08abc2d9712c494b6f24607e9cfda5d545b 100644 (file)
@@ -51,17 +51,13 @@ HTTPMessage::HTTPMessage(const string& _body, const string& _version):
        cerr << __FILE__ << ": version = " << version << " | body ("
                << _body.length() << ") = " << _body << endl;
 #endif // DEBUG
        cerr << __FILE__ << ": version = " << version << " | body ("
                << _body.length() << ") = " << _body << endl;
 #endif // DEBUG
+       headers["Accept-Ranges"] = "bytes";
        set_body(_body);
 }
 
 void HTTPMessage::set_body(const string& _body) {
        body = _body;
        set_body(_body);
 }
 
 void HTTPMessage::set_body(const string& _body) {
        body = _body;
-       if (body.length()) {
-               stringstream ss; // TODO ver forma mas linda de convertir
-               ss << (body.length()); // FIXME No se por que tengo que sumarle 1.
-               headers["Accept-Ranges"] = "bytes";
-               headers["Content-Length"] = ss.str();
-       }
+       headers["Content-Length"] = String().from(body.length());
 }
 
 const string& HTTPMessage::get_body(void) const {
 }
 
 const string& HTTPMessage::get_body(void) const {
@@ -77,16 +73,14 @@ istream& operator>>(istream& is, HTTPMessage& m) {
                String sbuf(buf);
                sbuf.trim();
                if (sbuf.length()) {
                String sbuf(buf);
                sbuf.trim();
                if (sbuf.length()) {
-                       stringstream ss;
-                       ss << sbuf;
+                       stringstream ss(sbuf);
                        ss >> m.headers;
                // Fin de las cabeceras.
                } else {
                        // Hay Content-Length, entonces hay body (no respeta RFC AFAIK).
                        if (m.headers.find("Content-Length") != m.headers.end()) {
                        ss >> m.headers;
                // Fin de las cabeceras.
                } else {
                        // Hay Content-Length, entonces hay body (no respeta RFC AFAIK).
                        if (m.headers.find("Content-Length") != m.headers.end()) {
-                               stringstream ss(m.headers["Content-Length"]);
                                streamsize size;
                                streamsize size;
-                               ss >> size;
+                               to(m.headers["Content-Length"], size);
                                char* const buf2 = new char[size+1];
                                if (is.readsome(buf2, size)) {
                                        m.body = buf2;
                                char* const buf2 = new char[size+1];
                                if (is.readsome(buf2, size)) {
                                        m.body = buf2;
index 8f9b2dbe6b410677fced804480a3fa37ea7a9d8a..97dd19f5123eee3d9de4fd23ed59ef1ca38c983c 100644 (file)
@@ -93,21 +93,6 @@ String String::join(const vector<string>& v, const string& sep) {
        return ss.str();
 }
 
        return ss.str();
 }
 
-/*
-template < class T > T& String::to(T& p) const {
-       stringstream ss(*this);
-       ss >> p;
-       return p;
-}
-
-template < class T > String& String::from(const T& p) {
-       stringstream ss;
-       ss << p;
-       ss >> (*this);
-       return *this;
-}
-*/
-
 } // namespace Server
 
 } // namespace PlaQui
 } // namespace Server
 
 } // namespace PlaQui
index c5fc75f556f9c80d36eea4081eddf7716675eba7..88027e16442410bf37b1a72546f2733151c13d37 100644 (file)
@@ -28,7 +28,6 @@
 #include "plaqui/server/controlclient.h"
 #include "plaqui/server/string.h"
 #include <iostream>
 #include "plaqui/server/controlclient.h"
 #include "plaqui/server/string.h"
 #include <iostream>
-#include <sstream>
 #include <exception>
 #include <vector>
 
 #include <exception>
 #include <vector>
 
@@ -76,11 +75,10 @@ int main(int argc, char* argv[]) {
                // Obtengo host.
                host = argv[1];
        }
                // Obtengo host.
                host = argv[1];
        }
+       // Obtengo puerto.
        Connection::Port port = 7522;
        if (argc > 2) {
        Connection::Port port = 7522;
        if (argc > 2) {
-               // Obtengo puerto.
-               stringstream str(argv[2]);
-               str >> port;
+               to(argv[2], port);
        }
 
        // Inicializa threads.
        }
 
        // Inicializa threads.
index 6bb5f57f1b20d11290c7240893b7f261a78c4e39..f1e86b958aa757da5cf80e2fcd425652aaa9ca39 100644 (file)
@@ -26,8 +26,8 @@
 //
 
 #include "plaqui/server/receiver.h"
 //
 
 #include "plaqui/server/receiver.h"
+#include "plaqui/server/string.h"
 #include <iostream>
 #include <iostream>
-#include <sstream>
 #include <exception>
 
 using namespace std;
 #include <exception>
 
 using namespace std;
@@ -51,8 +51,7 @@ int main(int argc, char* argv[]) {
        Connection::Port port = 7528;
        if (argc > 1) {
                // Obtengo puerto.
        Connection::Port port = 7528;
        if (argc > 1) {
                // Obtengo puerto.
-               stringstream str(argv[1]);
-               str >> port;
+               to(argv[1], port);
        }
        string host = "localhost";
        if (argc > 2) {
        }
        string host = "localhost";
        if (argc > 2) {
index 2cd23ddb0f472d6cbcaaaec965f0869e15ba4cc1..bdb6190c7b88e29c0f16de19085307134c70290f 100644 (file)
@@ -27,9 +27,9 @@
 
 #include "plaqui/server/connection.h"
 #include "plaqui/server/server.h"
 
 #include "plaqui/server/connection.h"
 #include "plaqui/server/server.h"
+#include "plaqui/server/string.h"
 #include <socket++/sockinet.h>
 #include <iostream>
 #include <socket++/sockinet.h>
 #include <iostream>
-#include <sstream>
 #include <exception>
 
 using namespace std;
 #include <exception>
 
 using namespace std;
@@ -53,8 +53,7 @@ int main(int argc, char* argv[]) {
                // Si tiene 2 parámetros.
                if (argc > 2) {
                        // Obtengo puerto.
                // Si tiene 2 parámetros.
                if (argc > 2) {
                        // Obtengo puerto.
-                       stringstream ss(argv[2]);
-                       ss >> port;
+                       to(argv[2], port);
                }
        }
 
                }
        }