c++/POSIXoveFronty/Fronta/program.cpp
changeset 1 9a570824084d
child 2 f1aae09bb78e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp	Fri Apr 03 22:39:11 2009 +0200
     1.3 @@ -0,0 +1,99 @@
     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 +
    1.11 +#include <program.h>
    1.12 +#include <stdlib.h>
    1.13 +//#include <iostream>
    1.14 +#include <c++/4.3.2/iostream>
    1.15 +#include <mqueue.h>
    1.16 +#include <readline/readline.h>
    1.17 +
    1.18 +using namespace std;
    1.19 +
    1.20 +struct mq_attr ma = {
    1.21 +    ma.mq_maxmsg = 5,
    1.22 +    ma.mq_msgsize = 100
    1.23 +};
    1.24 +
    1.25 +/*
    1.26 + * 
    1.27 + */
    1.28 +int main(int argc, char** argv) {
    1.29 +
    1.30 +    cout << "Vítejte v programu POSIXovéFronty" << endl;
    1.31 +
    1.32 +    ma.mq_maxmsg = 5;
    1.33 +    ma.mq_msgsize = 100;
    1.34 +
    1.35 +    
    1.36 +
    1.37 +    //cout << NAZEV_FRONTY << endl;
    1.38 +
    1.39 +    if (isOdesilaciRezim()) {
    1.40 +        odesilej();
    1.41 +    } else {
    1.42 +        prijimej();
    1.43 +    }
    1.44 +
    1.45 +
    1.46 +
    1.47 +
    1.48 +
    1.49 +    return (EXIT_SUCCESS);
    1.50 +}
    1.51 +
    1.52 +bool isOdesilaciRezim() {
    1.53 +    //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
    1.54 +
    1.55 +    cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
    1.56 +
    1.57 +    char odpoved = cin.get();
    1.58 +    cin.get();
    1.59 +
    1.60 +    if (odpoved == 'o') {
    1.61 +        return true;
    1.62 +    } else if (odpoved == 'p') {
    1.63 +        return false;
    1.64 +    } else {
    1.65 +        return isOdesilaciRezim();
    1.66 +    }
    1.67 +}
    1.68 +
    1.69 +void odesilej() {
    1.70 +    cout << "odesíláme" << endl;
    1.71 +
    1.72 +    
    1.73 +
    1.74 +    mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &ma);
    1.75 +
    1.76 +    char* zprava = "zpráva";
    1.77 +
    1.78 +    mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    1.79 +
    1.80 +    cin.get();
    1.81 +
    1.82 +    mq_close(fronta);
    1.83 +}
    1.84 +
    1.85 +void prijimej() {
    1.86 +    cout << "přijímáme" << endl;
    1.87 +
    1.88 +    mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
    1.89 +    char s[101];
    1.90 +    s[100] = '\0';
    1.91 +    if (mq_receive(fronta, s, 100, NULL) > 0) {
    1.92 +        printf("Přijatá zpráva: %s\n", s);
    1.93 +    } else {
    1.94 +        cout << "Nepodařilo se přijmout zprávu" << endl;
    1.95 +    }
    1.96 +
    1.97 +    //mq_unlink(NAZEV_FRONTY);
    1.98 +    mq_close(fronta);
    1.99 +
   1.100 +
   1.101 +}
   1.102 +