X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/6bffb655ac989fe4f115763270f84175bf24e4bb..6983220ff84632481c1628720fe15b8f3ac1c9cb:/Server/src/controlclient.cpp?ds=sidebyside diff --git a/Server/src/controlclient.cpp b/Server/src/controlclient.cpp index ffce9c0..511def5 100644 --- a/Server/src/controlclient.cpp +++ b/Server/src/controlclient.cpp @@ -25,6 +25,7 @@ // $Id$ // +#include "plaqui/server/httpresponse.h" #include "plaqui/server/controlclient.h" #ifdef DEBUG # include @@ -42,22 +43,30 @@ ControlClient::~ControlClient(void) { #endif // DEBUG } -ControlClient::ControlClient(string host, int port): - Connection(sockbuf::sock_stream) { +ControlClient::ControlClient(const string& host, const Connection::Port& port): + Connection(sockbuf::sock_stream, host, port) { #ifdef DEBUG - cerr << __FILE__ << ": host" << host + cerr << __FILE__ << ": host = " << host << " | port = " << port << endl; #endif // DEBUG - socket->connect(host.c_str(), port); - if (!socket->is_open()) { - throw ios::failure("Can't connect!"); - } } void ControlClient::real_run(void) { #ifdef DEBUG cerr << __FILE__ << ": real_run." << endl; #endif // DEBUG + try { + socket->connect(host.c_str(), port); + } catch (const sockerr& e) { + // Poner una señal de error específica? + error_received(1); + finish(); + return; + } + host = socket->localhost(); + port = socket->localport(); + // TODO sacar a la mierda? + connected(); while (!stop) { HTTPResponse response; try { @@ -73,18 +82,31 @@ void ControlClient::real_run(void) { cerr << __FILE__ << " : real_run() ERROR nro: " << e << endl; #endif // DEBUG // TODO - pasar como parametro codigo de error o algo. - error_received(); + error_received(e); continue; } switch (response.status_code) { case HTTPMessage::OK: - ok_received(); + ok_received(response.get_body()); + break; default: - error_received(); + error_received(response.status_code); + break; } } } +void ControlClient::send(const Command& command) { + socket << command << flush; +#ifdef DEBUG + cerr << __FILE__ << ": send() Enviado!" << endl; +#endif // DEBUG +} + +ControlClient::SignalConnected& ControlClient::signal_connected(void) { + return connected; +} + ControlClient::SignalOKReceived& ControlClient::signal_ok_received(void) { return ok_received; } @@ -93,13 +115,6 @@ ControlClient::SignalErrorReceived& ControlClient::signal_error_received(void) { return error_received; } -void ControlClient::send(const Command& command) { - socket << command << flush; -#ifdef DEBUG - cerr << __FILE__ << ": send() Enviado!" << endl; -#endif // DEBUG -} - } // namespace Server } // namespace PlaQui