Text zprávy pochází od uživatele. Přijímání i odesílání běží v nekonečných cyklech.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 07 Apr 2009 12:30:11 +0200
changeset 8e1b7dbc6dc4a
parent 7 cd5d8916d983
child 9 1af54f006439
Text zprávy pochází od uživatele. Přijímání i odesílání běží v nekonečných cyklech.
c++/POSIXoveFronty/Fronta/program.cpp
     1.1 --- a/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 01:47:16 2009 +0200
     1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 12:30:11 2009 +0200
     1.3 @@ -25,7 +25,7 @@
     1.4      signal(SIGTERM, zpracujSignal);
     1.5      signal(SIGINT, zpracujSignal);
     1.6  
     1.7 -    /** TODO: zeptat se na název fronty */
     1.8 +    /** TODO: zeptat se na název fronty – readline */
     1.9      //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY);
    1.10      nazevFronty = "/mojeFronta";
    1.11  
    1.12 @@ -36,9 +36,8 @@
    1.13          prijimej();
    1.14      }
    1.15  
    1.16 +    /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
    1.17      fronta.zavriFrontu(false);
    1.18 -
    1.19 -    /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
    1.20      return (EXIT_SUCCESS);
    1.21  }
    1.22  
    1.23 @@ -62,13 +61,18 @@
    1.24      cout << "Odesíláme…" << endl;
    1.25      fronta = Fronta(nazevFronty, false, true);
    1.26  
    1.27 -    /** TODO: načíst ze standardního vstupu */
    1.28 -    char zprava[] = "zpráva";
    1.29 +    while (true) {
    1.30 +        /** TODO: načítat pomocí readline */
    1.31 +        char zprava[100];
    1.32 +        cout << "Zadejte zprávu: \033[22;32m";
    1.33 +        cin.getline(zprava, 100);
    1.34 +        cout << "\033[0m\n";
    1.35  
    1.36 -    if (fronta.odesliZpravu(zprava) == 0) {
    1.37 -        cout << "Zpráva odeslána." << endl;
    1.38 -    } else {
    1.39 -        cout << "Při odesílání zprávy došlo k chybě." << endl;
    1.40 +        if (fronta.odesliZpravu(zprava) == 0) {
    1.41 +            cout << "Zpráva odeslána." << endl;
    1.42 +        } else {
    1.43 +            cout << "Při odesílání zprávy došlo k chybě." << endl;
    1.44 +        }
    1.45      }
    1.46  }
    1.47  
    1.48 @@ -76,18 +80,21 @@
    1.49      cout << "Přijímáme…" << endl;
    1.50      fronta = Fronta(nazevFronty, true, false);
    1.51  
    1.52 -    char* zprava = fronta.prijmiZpravu();
    1.53 +    while (true) {
    1.54 +        char* zprava = fronta.prijmiZpravu();
    1.55  
    1.56 -    if (zprava == NULL) {
    1.57 -        cout << "Nepodařilo se přijmout zprávu." << endl;
    1.58 -    } else {
    1.59 -        printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava);
    1.60 +        if (zprava == NULL) {
    1.61 +            cout << "Nepodařilo se přijmout zprávu." << endl;
    1.62 +        } else {
    1.63 +            printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava); // zelená
    1.64 +        }
    1.65      }
    1.66  }
    1.67  
    1.68  void zpracujSignal(int signal) {
    1.69      if (signal == SIGTERM || signal == SIGINT) {
    1.70 -        cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl;
    1.71 +        fronta.zavriFrontu(false);
    1.72 +        cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená
    1.73          exit(1);
    1.74      }
    1.75  }