]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/httpresponse.cpp
- Se completa un poco la doc del cliente.
[z.facultad/75.42/plaqui.git] / Server / src / httpresponse.cpp
index 46cc55e11db4fe6adc760eb980fad69c409110ba..2ae86a9b043890df97e37c45088ff4da9d7d6660 100644 (file)
@@ -40,14 +40,16 @@ namespace Server {
 
 HTTPResponse::~HTTPResponse(void) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": destructor." << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": destructor." << endl;
 #endif // DEBUG
 }
 
 HTTPResponse::HTTPResponse(const string& body, const string& version):
                HTTPMessage(body, version) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": body.length = " << body.length()
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": body.length = " << body.length()
                << " | version = " << version << endl;
 #endif // DEBUG
 }
@@ -55,34 +57,38 @@ HTTPResponse::HTTPResponse(const string& body, const string& version):
 HTTPResponse::HTTPResponse(const HTTPError& error):
                status_code(error.code) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": HTTPError(status_code = " << error.code
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": HTTPError(status_code = " << error.code
                << ", reason = " << HTTPMessage::reason(error.code) << ", desc = " << error.what()
                << ")" << endl;
 #endif // DEBUG
-       set_body(string("<plaqui><error desc=\"") + error.what() + "\" /></plaqui>");
+       set_body(string("<response desc=\"") + error.what() + "\" />");
 }
 
 HTTPResponse::HTTPResponse(unsigned status_code, const string& body):
                HTTPMessage(body), status_code(status_code) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": status_code = " << status_code
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": status_code = " << status_code
                << " | body.length = " << body.length() << endl;
 #endif // DEBUG
 }
 
 istream& operator>>(istream& is, HTTPResponse& resp)
-               throw (HTTPResponse::Error, ios::failure) {
+               throw (HTTPResponse::Error, 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 mas 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.
@@ -116,16 +122,15 @@ istream& operator>>(istream& is, HTTPResponse& resp)
        if (line.length() != 3) {
                throw HTTPResponse::INVALID_HTTP_RESPONSE_CODE;
        }
-       stringstream ss;
-       ss << line; // TODO ver forma mas linda de convertir
-       ss >> resp.status_code;
+       to(line, resp.status_code);
        is >> static_cast<HTTPMessage&>(resp);
        return is;
 }
 
-ostream& operator<<(ostream& os, const HTTPResponse& resp) {
+ostream& operator<<(ostream& os, const HTTPResponse& resp) throw(sockerr) {
 #ifdef DEBUG
-       cerr << __FILE__ << ": operator<<()" << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               << ": operator<<()" << endl;
 #endif // DEBUG
        os << "HTTP/" << resp.version << " " << resp.status_code << " "
                << HTTPMessage::reason(resp.status_code) << "\r\n";