]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/tests/client_test.cpp
El ControlClient ya puede recibir "frames" con el estado de la planta! :-D
[z.facultad/75.42/plaqui.git] / Server / tests / client_test.cpp
index 3f9f52ce2d36327e8556b76328752bb681a51201..c5fc75f556f9c80d36eea4081eddf7716675eba7 100644 (file)
@@ -27,7 +27,6 @@
 
 #include "plaqui/server/controlclient.h"
 #include "plaqui/server/string.h"
-//#include <socket++/sockinet.h>
 #include <iostream>
 #include <sstream>
 #include <exception>
@@ -46,8 +45,14 @@ void on_connected(void) {
        cout << "   Conectado! :-)" << endl;
 }
 
-void on_ok_received(void) {
+void on_ok_received(const string& body) {
        cout << "   Respuesta recibida: OK! :-D" << endl;
+       cout << "       Body: " << body << endl;
+}
+
+void on_frame_received(const string& frame) {
+       cout << "   Frame recibido! :-D" << endl;
+       cout << frame << endl;
 }
 
 void on_error_received(unsigned code) {
@@ -71,7 +76,7 @@ int main(int argc, char* argv[]) {
                // Obtengo host.
                host = argv[1];
        }
-       unsigned port = 7522;
+       Connection::Port port = 7522;
        if (argc > 2) {
                // Obtengo puerto.
                stringstream str(argv[2]);
@@ -88,9 +93,13 @@ int main(int argc, char* argv[]) {
                client->signal_connected().connect(SigC::slot(on_connected));
                client->signal_ok_received().connect(SigC::slot(on_ok_received));
                client->signal_error_received().connect(SigC::slot(on_error_received));
+               client->signal_frame_received().connect(SigC::slot(on_frame_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:
@@ -104,16 +113,34 @@ int main(int argc, char* argv[]) {
                                        break;
                                default:
                                        Command cmd(v[0], v[1]);
-                                       v.erase(v.begin(), v.begin() + 1);
+                                       v.erase(v.begin(), v.begin() + 2);
                                        cmd.set_args(v);
                                        client->send(cmd);
                                        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;
        }