Text zprávy pochází od uživatele. Přijímání i odesílání běží v nekonečných cyklech.
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 }