]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/httprequest.cpp
Agrego 2 ejemplos con problemas con la logica de control. El cliente la
[z.facultad/75.42/plaqui.git] / Server / src / httprequest.cpp
index d62b7859f1aa320f61f6651e69f698e2b1388ba2..1da38a7404bcd69bfb3d15daad2ce11d4973871d 100644 (file)
@@ -39,7 +39,8 @@ namespace Server {
 
 HTTPRequest::~HTTPRequest(void) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": destructor." << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": destructor." << endl;
 #endif // DEBUG
 }
 
@@ -47,7 +48,8 @@ HTTPRequest::HTTPRequest(const string& uri, const HTTPMethod& method,
                const string& query, const string& body, const string& version):
                HTTPMessage(body, version), method(method), uri(uri), query(query) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": uri = " << uri << " | "
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": uri = " << uri << " | "
                        << "method = " << method_str() << " | "
                        << "query = " << query << " | "
                        << "body.length = " << body.length() << " | "
@@ -66,18 +68,20 @@ string HTTPRequest::method_str(void) const {
 }
 
 istream& operator>>(istream& is, HTTPRequest& req)
-               throw(HTTPError, ios::failure) {
+               throw(HTTPError, sockerr, ios::failure) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": operator>>()" << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": operator>>()" << endl;
 #endif // DEBUG
        char buf[BUFSIZ];
        // Obtengo primera línea (request)
        if (!is.getline(buf, BUFSIZ)) {
-               // No hay más líneas.
-               throw ios::failure("socket closed");
+               // Fin de archivo.
+               throw ios::failure("eof");
        }
 #ifdef DEBUG
-       cerr << __FILE__ << ":\tRecibiendo linea: " << buf << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ":\tRecibiendo linea: " << buf << endl;
 #endif // DEBUG
        String line(buf);
        // Si es la primera línea, es el request.
@@ -144,9 +148,10 @@ istream& operator>>(istream& is, HTTPRequest& req)
        return is;
 }
 
-ostream& operator<<(ostream& os, const HTTPRequest& req) {
+ostream& operator<<(ostream& os, const HTTPRequest& req) throw(sockerr) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": operator<<()" << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": operator<<()" << endl;
 #endif // DEBUG
        os << req.method_str() << " " << req.uri;
        if (req.query.length()) {