# HG changeset patch # User František Kučera # Date 1238791151 -7200 # Node ID 9a570824084d6ec1b3a425391c54e15d47a288e6 # Parent 927ae23780384451c8edbde300626c03b2751915 Založení projektu, funguje odesílání i přijímání zpráv. diff -r 927ae2378038 -r 9a570824084d c++/POSIXoveFronty/Fronta/Fronta.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/POSIXoveFronty/Fronta/Fronta.pro Fri Apr 03 22:39:11 2009 +0200 @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) p dub 3 18:45:01 2009 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += program.h +SOURCES += program.cpp diff -r 927ae2378038 -r 9a570824084d c++/POSIXoveFronty/Fronta/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/POSIXoveFronty/Fronta/Makefile Fri Apr 03 22:39:11 2009 +0200 @@ -0,0 +1,193 @@ +############################################################################# +# Makefile for building: Fronta +# Generated by qmake (2.01a) (Qt 4.4.3) on: p dub 3 18:45:02 2009 +# Project: Fronta.pro +# Template: app +# Command: /usr/bin/qmake -unix -o Makefile Fronta.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) +CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) +INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. +LINK = g++ +LFLAGS = -Wl,--no-undefined +LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -sf +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = program.cpp +OBJECTS = program.o +DIST = /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + Fronta.pro +QMAKE_TARGET = Fronta +DESTDIR = +TARGET = Fronta + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(OBJECTS) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: Fronta.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/lib/libQtGui.prl \ + /usr/lib/libQtCore.prl + $(QMAKE) -unix -o Makefile Fronta.pro +/usr/share/qt4/mkspecs/common/g++.conf: +/usr/share/qt4/mkspecs/common/unix.conf: +/usr/share/qt4/mkspecs/common/linux.conf: +/usr/share/qt4/mkspecs/qconfig.pri: +/usr/share/qt4/mkspecs/features/qt_functions.prf: +/usr/share/qt4/mkspecs/features/qt_config.prf: +/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/usr/share/qt4/mkspecs/features/default_pre.prf: +/usr/share/qt4/mkspecs/features/release.prf: +/usr/share/qt4/mkspecs/features/default_post.prf: +/usr/share/qt4/mkspecs/features/warn_on.prf: +/usr/share/qt4/mkspecs/features/qt.prf: +/usr/share/qt4/mkspecs/features/unix/thread.prf: +/usr/share/qt4/mkspecs/features/moc.prf: +/usr/share/qt4/mkspecs/features/resources.prf: +/usr/share/qt4/mkspecs/features/uic.prf: +/usr/share/qt4/mkspecs/features/yacc.prf: +/usr/share/qt4/mkspecs/features/lex.prf: +/usr/lib/libQtGui.prl: +/usr/lib/libQtCore.prl: +qmake: FORCE + @$(QMAKE) -unix -o Makefile Fronta.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/Fronta1.0.0 || $(MKDIR) .tmp/Fronta1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Fronta1.0.0/ && $(COPY_FILE) --parents program.h .tmp/Fronta1.0.0/ && $(COPY_FILE) --parents program.cpp .tmp/Fronta1.0.0/ && (cd `dirname .tmp/Fronta1.0.0` && $(TAR) Fronta1.0.0.tar Fronta1.0.0 && $(COMPRESS) Fronta1.0.0.tar) && $(MOVE) `dirname .tmp/Fronta1.0.0`/Fronta1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Fronta1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + +####### Compile + +program.o: program.cpp program.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o program.o program.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff -r 927ae2378038 -r 9a570824084d c++/POSIXoveFronty/Fronta/program.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/POSIXoveFronty/Fronta/program.cpp Fri Apr 03 22:39:11 2009 +0200 @@ -0,0 +1,99 @@ +/* + * File: program.cpp + * Author: fiki + * + * Created on 1. duben 2009, 23:54 + */ + +#include +#include +//#include +#include +#include +#include + +using namespace std; + +struct mq_attr ma = { + ma.mq_maxmsg = 5, + ma.mq_msgsize = 100 +}; + +/* + * + */ +int main(int argc, char** argv) { + + cout << "Vítejte v programu POSIXovéFronty" << endl; + + ma.mq_maxmsg = 5; + ma.mq_msgsize = 100; + + + + //cout << NAZEV_FRONTY << endl; + + if (isOdesilaciRezim()) { + odesilej(); + } else { + prijimej(); + } + + + + + + return (EXIT_SUCCESS); +} + +bool isOdesilaciRezim() { + //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací"); + + cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl; + + char odpoved = cin.get(); + cin.get(); + + if (odpoved == 'o') { + return true; + } else if (odpoved == 'p') { + return false; + } else { + return isOdesilaciRezim(); + } +} + +void odesilej() { + cout << "odesíláme" << endl; + + + + mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &ma); + + char* zprava = "zpráva"; + + mq_send(fronta, zprava, strlen(zprava) + 1, 0); + + cin.get(); + + mq_close(fronta); +} + +void prijimej() { + cout << "přijímáme" << endl; + + mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY); + char s[101]; + s[100] = '\0'; + if (mq_receive(fronta, s, 100, NULL) > 0) { + printf("Přijatá zpráva: %s\n", s); + } else { + cout << "Nepodařilo se přijmout zprávu" << endl; + } + + //mq_unlink(NAZEV_FRONTY); + mq_close(fronta); + + +} + diff -r 927ae2378038 -r 9a570824084d c++/POSIXoveFronty/Fronta/program.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/POSIXoveFronty/Fronta/program.h Fri Apr 03 22:39:11 2009 +0200 @@ -0,0 +1,32 @@ +/* + * File: program.h + * Author: fiki + * + * Created on 2. duben 2009, 0:07 + */ + +#ifndef _PROGRAM_H +#define _PROGRAM_H + + +#ifdef __cplusplus +extern "C" { +#endif + + const char* NAZEV_FRONTY = "/mojeFronta"; + void prijimej(); + void odesilej(); + + /** + * zeptá se uživatele, zda se má program spustit v odesílacím nebo přijímacím režimu. + * true = odesílací + * false = přijímací + */ + bool isOdesilaciRezim(); + +#ifdef __cplusplus +} +#endif + +#endif /* _PROGRAM_H */ +