X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/e90831f68ec3af87bddba19b44be388eb2b3752e..abe01db4642ea70f5d925ddcfccc6c7bf9ff8fe9:/Server/src/receiver.cpp?ds=sidebyside diff --git a/Server/src/receiver.cpp b/Server/src/receiver.cpp index 8185727..9133f85 100644 --- a/Server/src/receiver.cpp +++ b/Server/src/receiver.cpp @@ -43,29 +43,39 @@ const string Receiver::FRAME_END(""); Receiver::~Receiver(void) { #ifdef DEBUG - cerr << __FILE__ << ": destructor." << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": destructor." << endl; #endif // DEBUG } -Receiver::Receiver(const Connection::Port& port, const string& host): - Connection(sockbuf::sock_dgram, host, port) { +Receiver::Receiver(const Connection::Port& port, const string& host) + throw(sockerr): Connection(sockbuf::sock_dgram, host, port) { #ifdef DEBUG - cerr << __FILE__ << ": port = " << port + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": port = " << port << " | host = " << host << endl; #endif // DEBUG - //socket->bind(port); socket->bind(host.c_str(), port); } // XXX EL XML DEBE EMPEZAR Y FINALIZAR EN UNA LINEA SEPARADA. -void Receiver::real_run(void) { +void Receiver::real_run(void) throw() { #ifdef DEBUG - cerr << __FILE__ << ": real_run." << endl; + cerr << __FILE__ << "(" << __LINE__ << ")" + << ": real_run." << endl; #endif // DEBUG char buf[BUFSIZ]; bool in_frame = false; stringstream ss; - while (!stop && socket.getline(buf, BUFSIZ)) { + while (!stop()) { + try { + if (!socket.getline(buf, BUFSIZ)) { + return; // Se terminó la transmision. + } + } catch (const sockerr& e) { + signal_error().emit(e.serrno(), e.errstr()); + return; + } string sbuf = buf; if (in_frame) { string::size_type pos = sbuf.find(FRAME_END);