c++/POSIXoveFronty/Fronta/program.cpp
changeset 5 a6822e6dd2ca
parent 4 fb862232e704
child 6 617fef4676b9
     1.1 --- a/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 21:08:09 2009 +0200
     1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 22:02:15 2009 +0200
     1.3 @@ -1,14 +1,11 @@
     1.4 -/* 
     1.5 - * File:   program.cpp
     1.6 - * Author: fiki
     1.7 - *
     1.8 - * Created on 1. duben 2009, 23:54
     1.9 +/**
    1.10 + * Program POSIXové Fronty
    1.11 + * @autor František Kučera <franta-hg@frantovo.cz>
    1.12   */
    1.13  
    1.14  #include <program.h>
    1.15  #include <stdlib.h>
    1.16 -//#include <iostream>
    1.17 -#include <c++/4.3.2/iostream>
    1.18 +#include <iostream>
    1.19  #include <mqueue.h>
    1.20  #include <readline/readline.h>
    1.21  #include <signal.h>
    1.22 @@ -22,35 +19,26 @@
    1.23  
    1.24      cout << "Vítejte v programu POSIXovéFronty" << endl;
    1.25  
    1.26 +    /** Nastavíme reakci na signál SIGTERM */
    1.27      signal(SIGTERM, zpracujSignal);
    1.28 +    signal(SIGINT, zpracujSignal);
    1.29  
    1.30 +    /** Nastavíme vlastnosti fronty */
    1.31      mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
    1.32      mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
    1.33  
    1.34 -
    1.35 -    //cout << "maxmsg: " << ma.mq_maxmsg;
    1.36 -    //cout << "msgsize: " << ma.mq_msgsize;
    1.37 -
    1.38 -
    1.39 -
    1.40 -
    1.41 -    //cout << NAZEV_FRONTY << endl;
    1.42 -
    1.43 +    /** Program pracuje buď v režimu přijímání nebo odesílání */
    1.44      if (isOdesilaciRezim()) {
    1.45          odesilej();
    1.46      } else {
    1.47          prijimej();
    1.48      }
    1.49  
    1.50 -
    1.51 -
    1.52 -
    1.53 -
    1.54 +    /** Sem se nedostaneme – program končí, až když dostane patřičný signál. */
    1.55      return (EXIT_SUCCESS);
    1.56  }
    1.57  
    1.58  bool isOdesilaciRezim() {
    1.59 -    //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
    1.60  
    1.61      cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
    1.62  
    1.63 @@ -67,9 +55,7 @@
    1.64  }
    1.65  
    1.66  void odesilej() {
    1.67 -    cout << "odesíláme" << endl;
    1.68 -
    1.69 -
    1.70 +    cout << "Odesíláme…" << endl;
    1.71  
    1.72      mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &mq_vlastnosti);
    1.73  
    1.74 @@ -77,18 +63,16 @@
    1.75  
    1.76      int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    1.77      if (vysledek == 0) {
    1.78 -        cout << "Zpráva odeslána" << endl;
    1.79 +        cout << "Zpráva odeslána." << endl;
    1.80      } else {
    1.81 -        cout << "Při odesílání zprávy došlo k chybě" << endl;
    1.82 +        cout << "Při odesílání zprávy došlo k chybě." << endl;
    1.83      }
    1.84  
    1.85 -    //cin.get();
    1.86 -
    1.87      mq_close(fronta);
    1.88  }
    1.89  
    1.90  void prijimej() {
    1.91 -    cout << "přijímáme" << endl;
    1.92 +    cout << "Přijímáme…" << endl;
    1.93  
    1.94      mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
    1.95      char s[DELKA_ZPRAVY + 1];
    1.96 @@ -96,16 +80,15 @@
    1.97      if (mq_receive(fronta, s, DELKA_ZPRAVY, NULL) > 0) {
    1.98          printf("Přijatá zpráva: %s\n", s);
    1.99      } else {
   1.100 -        cout << "Nepodařilo se přijmout zprávu" << endl;
   1.101 +        cout << "Nepodařilo se přijmout zprávu." << endl;
   1.102      }
   1.103  
   1.104 -    //mq_unlink(NAZEV_FRONTY);
   1.105      mq_close(fronta);
   1.106  }
   1.107  
   1.108  void zpracujSignal(int signal) {
   1.109 -    if (signal == SIGTERM) {
   1.110 -        cout << "Končím program na základě signálu " << signal << endl;
   1.111 +    if (signal == SIGTERM || signal == SIGINT) {
   1.112 +        cout << "Končím program na základě signálu " << signal << "." << endl;
   1.113          exit(1);
   1.114      }
   1.115  }