# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1239100211 -7200
# Node ID e1b7dbc6dc4ab033d73ccf404d864453eadc365e
# Parent  cd5d8916d9832403d7869c9adf074067cba58e50
Text zprávy pochází od uživatele. Přijímání i odesílání běží v nekonečných cyklech.

diff -r cd5d8916d983 -r e1b7dbc6dc4a c++/POSIXoveFronty/Fronta/program.cpp
--- a/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 01:47:16 2009 +0200
+++ b/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 12:30:11 2009 +0200
@@ -25,7 +25,7 @@
     signal(SIGTERM, zpracujSignal);
     signal(SIGINT, zpracujSignal);
 
-    /** TODO: zeptat se na název fronty */
+    /** TODO: zeptat se na název fronty – readline */
     //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY);
     nazevFronty = "/mojeFronta";
 
@@ -36,9 +36,8 @@
         prijimej();
     }
 
+    /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
     fronta.zavriFrontu(false);
-
-    /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
     return (EXIT_SUCCESS);
 }
 
@@ -62,13 +61,18 @@
     cout << "Odesíláme…" << endl;
     fronta = Fronta(nazevFronty, false, true);
 
-    /** TODO: načíst ze standardního vstupu */
-    char zprava[] = "zpráva";
+    while (true) {
+        /** TODO: načítat pomocí readline */
+        char zprava[100];
+        cout << "Zadejte zprávu: \033[22;32m";
+        cin.getline(zprava, 100);
+        cout << "\033[0m\n";
 
-    if (fronta.odesliZpravu(zprava) == 0) {
-        cout << "Zpráva odeslána." << endl;
-    } else {
-        cout << "Při odesílání zprávy došlo k chybě." << endl;
+        if (fronta.odesliZpravu(zprava) == 0) {
+            cout << "Zpráva odeslána." << endl;
+        } else {
+            cout << "Při odesílání zprávy došlo k chybě." << endl;
+        }
     }
 }
 
@@ -76,18 +80,21 @@
     cout << "Přijímáme…" << endl;
     fronta = Fronta(nazevFronty, true, false);
 
-    char* zprava = fronta.prijmiZpravu();
+    while (true) {
+        char* zprava = fronta.prijmiZpravu();
 
-    if (zprava == NULL) {
-        cout << "Nepodařilo se přijmout zprávu." << endl;
-    } else {
-        printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava);
+        if (zprava == NULL) {
+            cout << "Nepodařilo se přijmout zprávu." << endl;
+        } else {
+            printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava); // zelená
+        }
     }
 }
 
 void zpracujSignal(int signal) {
     if (signal == SIGTERM || signal == SIGINT) {
-        cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl;
+        fronta.zavriFrontu(false);
+        cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená
         exit(1);
     }
 }