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 +