]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/tests/client_test.cpp
- Se mejora el manejo de errores (excepciones) en los tests (y en algunas otras
[z.facultad/75.42/plaqui.git] / Server / tests / client_test.cpp
index 3f9f52ce2d36327e8556b76328752bb681a51201..4605619ab83cf67dc7ef4addf0d660bc487f7bc8 100644 (file)
@@ -90,7 +90,10 @@ int main(int argc, char* argv[]) {
                client->signal_error_received().connect(SigC::slot(on_error_received));
                client->run();
                char buf[BUFSIZ];
-               while (client && cin.getline(buf, BUFSIZ)) {
+               while (cin.getline(buf, BUFSIZ)) {
+                       if (!client) {
+                               break;
+                       }
                        vector<string> v = String(buf).split(' ');
                        switch (v.size()) {
                                case 0:
@@ -110,10 +113,28 @@ int main(int argc, char* argv[]) {
                                        break;
                        }
                }
+       } catch (const sockerr& e) {
+               cerr << "Socket Error: " << e.operation() << " | serrno = "
+                       << e.serrno() << " | errstr = " << e.errstr() << endl;
+               if (e.io()) {
+                       cerr << "Es: non-blocking and interrupt io recoverable error."
+                               << endl;
+               } else if (e.arg()) {
+                       cerr <<  "Es: incorrect argument supplied. recoverable error."
+                               << endl;
+               } else if (e.op()) {
+                       cerr << "Es: operational error. recovery difficult." << endl;
+               } else if (e.conn()) {
+                       cerr << "Es: connection error." << endl;
+               } else if (e.addr()) {
+                       cerr << "Es: address error." << endl;
+               } else if (e.benign()) {
+                       cerr << "Es: recoverable read/write error like EINTR etc." << endl;
+               }
+       } catch (const exception& e) {
+               cerr << "Error: " << e.what() << endl;
        } catch (const char* e) {
                cerr << "Error: " << e << endl;
-       } catch (exception& e) {
-               cerr << "Error: " << e.what() << endl;
        } catch (...) {
                cerr << "Error desconocido!" << endl;
        }