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