1.1 --- a/c++/POSIXoveFronty/Fronta/program.cpp Sun Apr 05 22:02:15 2009 +0200
1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 01:16:04 2009 +0200
1.3 @@ -6,9 +6,11 @@
1.4 #include <program.h>
1.5 #include <stdlib.h>
1.6 #include <iostream>
1.7 -#include <mqueue.h>
1.8 #include <readline/readline.h>
1.9 #include <signal.h>
1.10 +#include <strings.h>
1.11 +
1.12 +#include "fronta.h"
1.13
1.14 using namespace std;
1.15
1.16 @@ -23,9 +25,9 @@
1.17 signal(SIGTERM, zpracujSignal);
1.18 signal(SIGINT, zpracujSignal);
1.19
1.20 - /** Nastavíme vlastnosti fronty */
1.21 - mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
1.22 - mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
1.23 + /** TODO: zeptat se na název fronty */
1.24 + //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY);
1.25 + nazevFronty = "/mojeFronta";
1.26
1.27 /** Program pracuje buď v režimu přijímání nebo odesílání */
1.28 if (isOdesilaciRezim()) {
1.29 @@ -34,7 +36,9 @@
1.30 prijimej();
1.31 }
1.32
1.33 - /** Sem se nedostaneme – program končí, až když dostane patřičný signál. */
1.34 + fronta.zavriFrontu(false);
1.35 +
1.36 + /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */
1.37 return (EXIT_SUCCESS);
1.38 }
1.39
1.40 @@ -56,34 +60,29 @@
1.41
1.42 void odesilej() {
1.43 cout << "Odesíláme…" << endl;
1.44 + fronta = Fronta(nazevFronty, false, true);
1.45
1.46 - mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &mq_vlastnosti);
1.47 -
1.48 + /** TODO: načíst ze standardního vstupu */
1.49 char zprava[] = "zpráva";
1.50
1.51 - int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0);
1.52 - if (vysledek == 0) {
1.53 + if (fronta.odesliZpravu(zprava) == 0) {
1.54 cout << "Zpráva odeslána." << endl;
1.55 } else {
1.56 cout << "Při odesílání zprávy došlo k chybě." << endl;
1.57 }
1.58 -
1.59 - mq_close(fronta);
1.60 }
1.61
1.62 void prijimej() {
1.63 cout << "Přijímáme…" << endl;
1.64 + fronta = Fronta(nazevFronty, true, false);
1.65
1.66 - mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
1.67 - char s[DELKA_ZPRAVY + 1];
1.68 - s[DELKA_ZPRAVY] = '\0';
1.69 - if (mq_receive(fronta, s, DELKA_ZPRAVY, NULL) > 0) {
1.70 - printf("Přijatá zpráva: %s\n", s);
1.71 + char* zprava = fronta.prijmiZpravu();
1.72 +
1.73 + if (zprava == NULL) {
1.74 + cout << "Nepodařilo se přijmout zprávu." << endl;
1.75 } else {
1.76 - cout << "Nepodařilo se přijmout zprávu." << endl;
1.77 + printf("Přijatá zpráva: %s\n", zprava);
1.78 }
1.79 -
1.80 - mq_close(fronta);
1.81 }
1.82
1.83 void zpracujSignal(int signal) {