c++/POSIXoveFronty/Fronta/program.cpp
author František Kučera <franta-hg@frantovo.cz>
Sun, 05 Apr 2009 12:39:59 +0200
changeset 2 f1aae09bb78e
parent 1 9a570824084d
child 4 fb862232e704
permissions -rw-r--r--
Přesunutí některých hodnot do konstatnt (počet zpráv, délka zprávy)
     1 /* 
     2  * File:   program.cpp
     3  * Author: fiki
     4  *
     5  * Created on 1. duben 2009, 23:54
     6  */
     7 
     8 #include <program.h>
     9 #include <stdlib.h>
    10 //#include <iostream>
    11 #include <c++/4.3.2/iostream>
    12 #include <mqueue.h>
    13 #include <readline/readline.h>
    14 
    15 using namespace std;
    16 
    17 int main() {
    18 
    19     cout << "Vítejte v programu POSIXovéFronty" << endl;
    20 
    21     mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
    22     mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
    23 
    24 
    25     //cout << "maxmsg: " << ma.mq_maxmsg;
    26     //cout << "msgsize: " << ma.mq_msgsize;
    27 
    28 
    29 
    30 
    31     //cout << NAZEV_FRONTY << endl;
    32 
    33     if (isOdesilaciRezim()) {
    34         odesilej();
    35     } else {
    36         prijimej();
    37     }
    38 
    39 
    40 
    41 
    42 
    43     return (EXIT_SUCCESS);
    44 }
    45 
    46 bool isOdesilaciRezim() {
    47     //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
    48 
    49     cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
    50 
    51     char odpoved = cin.get();
    52     cin.get();
    53 
    54     if (odpoved == 'o') {
    55         return true;
    56     } else if (odpoved == 'p') {
    57         return false;
    58     } else {
    59         return isOdesilaciRezim();
    60     }
    61 }
    62 
    63 void odesilej() {
    64     cout << "odesíláme" << endl;
    65 
    66 
    67 
    68     mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &mq_vlastnosti);
    69 
    70     char zprava[] = "zpráva";
    71 
    72     mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    73 
    74     cin.get();
    75 
    76     mq_close(fronta);
    77 }
    78 
    79 void prijimej() {
    80     cout << "přijímáme" << endl;
    81 
    82     mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
    83     char s[DELKA_ZPRAVY + 1];
    84     s[DELKA_ZPRAVY] = '\0';
    85     if (mq_receive(fronta, s, DELKA_ZPRAVY, NULL) > 0) {
    86         printf("Přijatá zpráva: %s\n", s);
    87     } else {
    88         cout << "Nepodařilo se přijmout zprávu" << endl;
    89     }
    90 
    91     //mq_unlink(NAZEV_FRONTY);
    92     mq_close(fronta);
    93 
    94 
    95 }