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.
franta-hg@1
     1
/* 
franta-hg@1
     2
 * File:   program.cpp
franta-hg@1
     3
 * Author: fiki
franta-hg@1
     4
 *
franta-hg@1
     5
 * Created on 1. duben 2009, 23:54
franta-hg@1
     6
 */
franta-hg@1
     7
franta-hg@1
     8
#include <program.h>
franta-hg@1
     9
#include <stdlib.h>
franta-hg@1
    10
//#include <iostream>
franta-hg@1
    11
#include <c++/4.3.2/iostream>
franta-hg@1
    12
#include <mqueue.h>
franta-hg@1
    13
#include <readline/readline.h>
franta-hg@1
    14
franta-hg@1
    15
using namespace std;
franta-hg@1
    16
franta-hg@1
    17
struct mq_attr ma = {
franta-hg@1
    18
    ma.mq_maxmsg = 5,
franta-hg@1
    19
    ma.mq_msgsize = 100
franta-hg@1
    20
};
franta-hg@1
    21
franta-hg@1
    22
/*
franta-hg@1
    23
 * 
franta-hg@1
    24
 */
franta-hg@1
    25
int main(int argc, char** argv) {
franta-hg@1
    26
franta-hg@1
    27
    cout << "Vítejte v programu POSIXovéFronty" << endl;
franta-hg@1
    28
franta-hg@1
    29
    ma.mq_maxmsg = 5;
franta-hg@1
    30
    ma.mq_msgsize = 100;
franta-hg@1
    31
franta-hg@1
    32
    
franta-hg@1
    33
franta-hg@1
    34
    //cout << NAZEV_FRONTY << endl;
franta-hg@1
    35
franta-hg@1
    36
    if (isOdesilaciRezim()) {
franta-hg@1
    37
        odesilej();
franta-hg@1
    38
    } else {
franta-hg@1
    39
        prijimej();
franta-hg@1
    40
    }
franta-hg@1
    41
franta-hg@1
    42
franta-hg@1
    43
franta-hg@1
    44
franta-hg@1
    45
franta-hg@1
    46
    return (EXIT_SUCCESS);
franta-hg@1
    47
}
franta-hg@1
    48
franta-hg@1
    49
bool isOdesilaciRezim() {
franta-hg@1
    50
    //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
franta-hg@1
    51
franta-hg@1
    52
    cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
franta-hg@1
    53
franta-hg@1
    54
    char odpoved = cin.get();
franta-hg@1
    55
    cin.get();
franta-hg@1
    56
franta-hg@1
    57
    if (odpoved == 'o') {
franta-hg@1
    58
        return true;
franta-hg@1
    59
    } else if (odpoved == 'p') {
franta-hg@1
    60
        return false;
franta-hg@1
    61
    } else {
franta-hg@1
    62
        return isOdesilaciRezim();
franta-hg@1
    63
    }
franta-hg@1
    64
}
franta-hg@1
    65
franta-hg@1
    66
void odesilej() {
franta-hg@1
    67
    cout << "odesíláme" << endl;
franta-hg@1
    68
franta-hg@1
    69
    
franta-hg@1
    70
franta-hg@1
    71
    mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &ma);
franta-hg@1
    72
franta-hg@1
    73
    char* zprava = "zpráva";
franta-hg@1
    74
franta-hg@1
    75
    mq_send(fronta, zprava, strlen(zprava) + 1, 0);
franta-hg@1
    76
franta-hg@1
    77
    cin.get();
franta-hg@1
    78
franta-hg@1
    79
    mq_close(fronta);
franta-hg@1
    80
}
franta-hg@1
    81
franta-hg@1
    82
void prijimej() {
franta-hg@1
    83
    cout << "přijímáme" << endl;
franta-hg@1
    84
franta-hg@1
    85
    mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
franta-hg@1
    86
    char s[101];
franta-hg@1
    87
    s[100] = '\0';
franta-hg@1
    88
    if (mq_receive(fronta, s, 100, NULL) > 0) {
franta-hg@1
    89
        printf("Přijatá zpráva: %s\n", s);
franta-hg@1
    90
    } else {
franta-hg@1
    91
        cout << "Nepodařilo se přijmout zprávu" << endl;
franta-hg@1
    92
    }
franta-hg@1
    93
franta-hg@1
    94
    //mq_unlink(NAZEV_FRONTY);
franta-hg@1
    95
    mq_close(fronta);
franta-hg@1
    96
franta-hg@1
    97
franta-hg@1
    98
}
franta-hg@1
    99