2 * Program POSIXové Fronty
3 * @autor František Kučera <franta-hg@frantovo.cz>
9 #include <readline/readline.h>
18 * Spuštění programu „POSIXovéFronty“
22 cout << "Vítejte v programu POSIXovéFronty" << endl;
24 /** Nastavíme reakci na signál SIGTERM */
25 signal(SIGTERM, zpracujSignal);
26 signal(SIGINT, zpracujSignal);
28 /** TODO: zeptat se na název fronty – readline */
29 //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY);
30 nazevFronty = "/mojeFronta";
32 /** Program pracuje buď v režimu přijímání nebo odesílání */
33 if (isOdesilaciRezim()) {
39 /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
40 fronta.zavriFrontu(false);
41 return (EXIT_SUCCESS);
44 bool isOdesilaciRezim() {
46 cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
48 char odpoved = cin.get();
53 } else if (odpoved == 'p') {
56 return isOdesilaciRezim();
61 cout << "Odesíláme…" << endl;
62 fronta = Fronta(nazevFronty, false, true);
65 /** TODO: načítat pomocí readline */
67 cout << "Zadejte zprávu: \033[22;32m";
68 cin.getline(zprava, 100);
71 if (fronta.odesliZpravu(zprava) == 0) {
72 cout << "Zpráva odeslána." << endl;
74 cout << "Při odesílání zprávy došlo k chybě." << endl;
80 cout << "Přijímáme…" << endl;
81 fronta = Fronta(nazevFronty, true, false);
84 char* zprava = fronta.prijmiZpravu();
87 cout << "Nepodařilo se přijmout zprávu." << endl;
89 printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava); // zelená
94 void zpracujSignal(int signal) {
95 if (signal == SIGTERM || signal == SIGINT) {
96 fronta.zavriFrontu(false);
97 cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená