c++/POSIXoveFronty/Fronta/program.cpp
author František Kučera <franta-hg@frantovo.cz>
Fri, 03 Apr 2009 22:39:11 +0200
changeset 1 9a570824084d
child 2 f1aae09bb78e
permissions -rw-r--r--
Založení projektu, funguje odesílání i přijímání zpráv.
     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 struct mq_attr ma = {
    18     ma.mq_maxmsg = 5,
    19     ma.mq_msgsize = 100
    20 };
    21 
    22 /*
    23  * 
    24  */
    25 int main(int argc, char** argv) {
    26 
    27     cout << "Vítejte v programu POSIXovéFronty" << endl;
    28 
    29     ma.mq_maxmsg = 5;
    30     ma.mq_msgsize = 100;
    31 
    32     
    33 
    34     //cout << NAZEV_FRONTY << endl;
    35 
    36     if (isOdesilaciRezim()) {
    37         odesilej();
    38     } else {
    39         prijimej();
    40     }
    41 
    42 
    43 
    44 
    45 
    46     return (EXIT_SUCCESS);
    47 }
    48 
    49 bool isOdesilaciRezim() {
    50     //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
    51 
    52     cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
    53 
    54     char odpoved = cin.get();
    55     cin.get();
    56 
    57     if (odpoved == 'o') {
    58         return true;
    59     } else if (odpoved == 'p') {
    60         return false;
    61     } else {
    62         return isOdesilaciRezim();
    63     }
    64 }
    65 
    66 void odesilej() {
    67     cout << "odesíláme" << endl;
    68 
    69     
    70 
    71     mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &ma);
    72 
    73     char* zprava = "zpráva";
    74 
    75     mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    76 
    77     cin.get();
    78 
    79     mq_close(fronta);
    80 }
    81 
    82 void prijimej() {
    83     cout << "přijímáme" << endl;
    84 
    85     mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
    86     char s[101];
    87     s[100] = '\0';
    88     if (mq_receive(fronta, s, 100, NULL) > 0) {
    89         printf("Přijatá zpráva: %s\n", s);
    90     } else {
    91         cout << "Nepodařilo se přijmout zprávu" << endl;
    92     }
    93 
    94     //mq_unlink(NAZEV_FRONTY);
    95     mq_close(fronta);
    96 
    97 
    98 }
    99