00001
00003 #ifndef IPC_MENSAGEIRO_H
00004 #define IPC_MENSAGEIRO_H
00005
00006 #define _GNU_SOURCE
00007
00008 #include <string>
00009 #include <cstdio>
00010
00011 #include <Extra/string.H>
00012
00013 extern "C" {
00014 #include <sys/msg.h>
00015 #include <unistd.h>
00016 #include <pwd.h>
00017 }
00018
00019 #include <IPC/erros.H>
00020
00021 namespace IPC {
00022
00095 class Mensageiro {
00096 public:
00105 Mensageiro(key_t const chave = getuid());
00106
00108 ~Mensageiro();
00109
00112 string meuIdentificador();
00113
00116 string identificadorDoOutro();
00117
00119 string stringRecebida();
00120
00122 int intRecebido();
00123
00125 char charRecebido();
00126
00128 void envia(string const& mensagem);
00129
00131 void envia(int const valor);
00132
00134 void envia(char const c);
00135
00136 private:
00137
00138 Mensageiro(Mensageiro const&);
00139
00140 Mensageiro& operator = (Mensageiro const&);
00141
00142 char leBasicoChar(int const tipo, bool const espera = true);
00143 int leBasicoInt(int const tipo, bool const espera = true);
00144 string leBasico(int const tipo, bool const espera = true);
00145 void escreveBasicoChar(int const tipo, char const c);
00146 void escreveBasicoInt(int const tipo, int const valor);
00147 void escreveBasico(int const tipo, string const& mensagem);
00148
00149 int eu;
00150 int outro;
00151 int meuUID;
00152 int outroUID;
00153 int id;
00154 bool servidor;
00155 static bool existe_instancia;
00156
00157 };
00158
00159 #include <IPC/mensageiro_impl.H>
00160 }
00161
00162 #endif //IPC_MENSAGEIRO_H