diff -r a6822e6dd2ca -r 617fef4676b9 c++/POSIXoveFronty/Fronta/program.cpp --- a/c++/POSIXoveFronty/Fronta/program.cpp Sun Apr 05 22:02:15 2009 +0200 +++ b/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 01:16:04 2009 +0200 @@ -6,9 +6,11 @@ #include #include #include -#include #include #include +#include + +#include "fronta.h" using namespace std; @@ -23,9 +25,9 @@ signal(SIGTERM, zpracujSignal); signal(SIGINT, zpracujSignal); - /** Nastavíme vlastnosti fronty */ - mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE; - mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY; + /** TODO: zeptat se na název fronty */ + //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY); + nazevFronty = "/mojeFronta"; /** Program pracuje buď v režimu přijímání nebo odesílání */ if (isOdesilaciRezim()) { @@ -34,7 +36,9 @@ prijimej(); } - /** Sem se nedostaneme – 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); } @@ -56,34 +60,29 @@ void odesilej() { cout << "Odesíláme…" << endl; + fronta = Fronta(nazevFronty, false, true); - mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &mq_vlastnosti); - + /** TODO: načíst ze standardního vstupu */ char zprava[] = "zpráva"; - int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0); - if (vysledek == 0) { + 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; } - - mq_close(fronta); } void prijimej() { cout << "Přijímáme…" << endl; + fronta = Fronta(nazevFronty, true, false); - mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY); - char s[DELKA_ZPRAVY + 1]; - s[DELKA_ZPRAVY] = '\0'; - if (mq_receive(fronta, s, DELKA_ZPRAVY, NULL) > 0) { - printf("Přijatá zpráva: %s\n", s); + char* zprava = fronta.prijmiZpravu(); + + if (zprava == NULL) { + cout << "Nepodařilo se přijmout zprávu." << endl; } else { - cout << "Nepodařilo se přijmout zprávu." << endl; + printf("Přijatá zpráva: %s\n", zprava); } - - mq_close(fronta); } void zpracujSignal(int signal) {