Gerado por Doxygen 1.2.2
1 Pacotes ´Indice dos namespaces 1
1.1 Pacotes Lista de namespaces . . . 1
2 Pacotes ´Indice dos componentes 3 2.1 Pacotes Lista de componentes . . . 3
3 Pacotes ´Indice dos ficheiros 5 3.1 Pacotes Lista de ficheiros . . . 5
4 Pacotes Documentac¸ ˜ao dos namespaces 7 4.1 Referencia ao namespace IPC . . . 7
5 Pacotes Documentac¸ ˜ao da classe 9 5.1 Referencia `a classe IPC::Erro . . . 9
5.2 Referencia `a classe IPC::Mensageiro . . . 11
6 Pacotes Documentac¸ ˜ao do ficheiro 15 6.1 Referencia ao ficheiro erros.H . . . 15
6.2 Referencia ao ficheiro ipc.H . . . 16
6.3 Referencia ao ficheiro mensageiro.C . . . 17
6.4 Referencia ao ficheiro mensageiro.H . . . 18
6.5 Referencia ao ficheiro mensageiro impl.H . . . 19
Pacotes ´Indice dos namespaces
1.1
Pacotes Lista de namespaces
Lista dos namespaces com uma breve descric¸ ˜ao:
2 Pacotes ´Indice dos namespaces
Pacotes ´Indice dos componentes
2.1
Pacotes Lista de componentes
Lista da classes, estruturas, uni ˜oes e interfaces com uma breve descric¸ ˜ao:
IPC::Erro (Classe usada para as excepc¸ ˜oes do pacoteIPC) . . . 9
IPC::Mensageiro (Classe cuja ´unica instˆancia (em cada processo) representa um mensageiro
4 Pacotes ´Indice dos componentes
Pacotes ´Indice dos ficheiros
3.1
Pacotes Lista de ficheiros
Lista de todos os ficheiros com uma breve descric¸ ˜ao:
mensageiro.C . . . 17
string.H . . . 20
erros.H (Ficheiro de interface do m ´odulo erros) . . . . 15
ipc.H (Ficheiro de interface da biblioteca) . . . . 16
mensageiro.H (Ficheiro de interface do m ´odulo mensageiro) . . . . 18
6 Pacotes ´Indice dos ficheiros
Pacotes Documentac¸ ˜ao dos namespaces
4.1
Referencia ao namespace IPC
Este espac¸o nominativo envolve todas as ferramentas da bibliotecaIPC++.
Componentes
classIPC::ErroclassIPC::Mensageiro
4.1.1
Descric¸ ˜ao detalhada
Este espac¸o nominativo envolve todas as ferramentas da bibliotecaIPC++.
A bibliotecaIPC++permite a utilizac¸ ˜ao simplificada de comunicac¸ ˜oes entre processos (IPC, de Inter Pro-cess Communications). A biblioteca consiste de um pacote IPC (representado pelo espac¸o nominativo IPC) consistindo, para j´a, apenas no m ´odulo fisico mensageiro e no m ´odulo f´ısico erros, com os correspondentes ficheiro de interfaceIPC/mensageiro.HeIPC/erros.H.
Nesta documentac¸ ˜ao omite-se o prefixo IPC:: sempre que conveniente para facilitar a leitura, embora em rigor este seja necess´ario.
Para construir um programa (neste caso teste ipc.C) que utilize estas biblioteca deve dar o seguinte coman-do:
c++ -Wall -ansi -pedantic -g -o teste ipc teste ipc.C -l IPC++
Os ficheiros fonte devem incluir o ficheiro de interfaceIPC/ipc.H, que por sua vez inclui os ficheiros de interface dos m ´odulos f´ısicos, ou incluir apenas o ficheiro de interface do m ´odulo pretendido.
Caso se pretenda instalar esta biblioteca noutro computador deve-se fazer o seguinte:
1. Importar os seguintes ficheiros:
8 Pacotes Documentac¸ ˜ao dos namespaces
Para importar no netscape basta fazer ’shift-clique’ no bot˜ao esquerdo do rato.
2. Dar os seguintes comandos:
tar -zxf Pacotes-0.1.tar.gz cd Pacotes
make
su (inserir a senha [password] de administrac¸˜ao da m´aquina) make install
exit
Autor(es):
Manuel Menezes de Sequeira
Vers˜ao:
0.1
Data:
2000
Pacotes Documentac¸ ˜ao da classe
5.1
Referencia `a classe IPC::Erro
Classe usada para as excepc¸ ˜oes do pacoteIPC.
#include IPC/erros.H
Membros p ´ublicos
Erro(string const& mensagem)
Constr´oi excepc¸ ˜ao dada mensagem de erro.
Erro()
Constr´oi excepc¸ ˜ao usando mensagem de erro padr ˜ao correspondente ao ´ultimo erro ocorrido.
operator string const() const
´
E poss´ıvel converter as excepc¸ ˜oesIPCem cadeias de caracteres.
5.1.1
Descric¸ ˜ao detalhada
Classe usada para as excepc¸ ˜oes do pacoteIPC. Definido na linha 13 do ficheiro erros.H.
5.1.2
Documentac¸ ˜ao do Construtor & Destrutor
5.1.2.1 IPC::Erro::Erro (string const & mensagem) [inline]
10 Pacotes Documentac¸ ˜ao da classe
Definido na linha 16 do ficheiro erros.H.
5.1.2.2 IPC::Erro::Erro () [inline]
Constr´oi excepc¸˜ao usando mensagem de erro padr˜ao correspondente ao ´ultimo erro ocorrido. Definido na linha 21 do ficheiro erros.H.
5.1.3
Documentac¸ ˜ao dos m´etodos
5.1.3.1 IPC::Erro::operator string const () const [inline]
´
E poss´ıvel converter as excepc¸ ˜oesIPCem cadeias de caracteres.
A cadeia devolvida por este operador inclui a mensagem de erro e um prefixo indicando a sua origem no pacoteIPC.
Definido na linha 27 do ficheiro erros.H.
A documentac¸ ˜ao para esta classe foi gerada a partir do seguinte ficheiro:
erros.H
5.2
Referencia `a classe IPC::Mensageiro
Classe cuja ´unica instˆancia (em cada processo) representa um mensageiro entre o processo em causa e um outro na mesma m´aquina.
#include IPC/mensageiro.H
Membros p ´ublicos
Mensageiro(key t const chave = getuid())
Contrutor de um mensageiro.
Mensageiro()
Destrutor.
stringmeuIdentificador()
Devolve um identificador ´unico para o processo, que consiste no nome do utilizador seguido do n ´umero do processo.
stringidentificadorDoOutro()
Devolve o identificador ´unico do outro processo, com o qual o corrente est ´a emparelhado atrav´es do men-sageiro.
stringstringRecebida()
Devolve uma cadeia de caracteres recebida do outro.
intintRecebido()
Devolve um inteiro recebido do outro.
charcharRecebido()
Devolve um caractere recebido.
voidenvia(string const& mensagem)
Envia uma cadeia de caracteres ao outro.
voidenvia(int const valor)
Envia um inteiro ao outro.
voidenvia(char const c)
Envia um caractere ao outro.
5.2.1
Descric¸ ˜ao detalhada
Classe cuja ´unica instˆancia (em cada processo) representa um mensageiro entre o processo em causa e um outro na mesma m´aquina.
12 Pacotes Documentac¸ ˜ao da classe
Esta classe ´e um solit˜ao! A ideia ´e que um processo com uma instˆancia desta classe fica em comunicac¸ ˜ao com outro com outra instˆancia da mesma classe. A selecc¸ ˜ao do outro processo ´e feita automaticamente, de acordo com as disponibilidades. A ideia ´e permitir a comunicac¸ ˜ao entre dois processos do mesmo jogo, sendo que os jogadores n˜ao tˆem controlo sobre que ser´a o seu opositor.
Nas descric¸ ˜oes usa-se o termo ”eu”para indicar o processo corrente, e ”outro”para indicar o processo a que o ”eu”est´a emparelhado pelo mensageiro.
A comunicac¸ ˜ao faz-se enviando e recebendo mensagens. As mensagens enviadas e recebidas s ˜ao, por enquanto, de apenas trˆes tipos: char, int e string. N˜ao existe, para j´a, nenhuma forma de indagar se h´a alguma mensagem dispon´ıvel para ser recebida e muito menos saber o seu tipo. O protocolo entre os processos ´e que tem de garantir que os processos recebem tantas mensagens quantas as enviadas pelo outro, enviam tantas mensagens quantas as recebidas pelo outro, e com tipos compat´ıveis.
A classe ´e simples de usar. Por exemplo, suponha que se pretendia fazer um pequeno jogo em que ganha quem gerar um n ´umero aleat´orio maior. Poder-se-ia escrever:
#include <IPC/mensageiro.H> // ou #include <IPC/ipc.H> #include <cstdlib>
#include <ctime> using namespace IPC; int main()
// Se n˜ao se fizer isto os jogadores geram sempre o mesmo n´umero // aleat´orio...
srand(time(0)); try
// Construir mensageiro:
Mensageiro mensageiro;
// Escrever identificac¸˜oes:
cout << "Eu sou o " << mensageiro.meu Identificador() << endl; cout << "Ele ´e o " << mensageiro.identificador Do
Ou-tro() << endl;
// Gerar n´umero aleat´orio: int meu = rand();
// Envi´a-lo ao advers´ario: mensageiro.envia(meu);
// Receber n´umero do adevers´ario: int dele = mensageiro.int Recebido(); // Verificar resultado:
if(meu < dele)
cout << "Perdi " << meu << " contra " << dele << "..." << endl;
else if(meu > dele)
cout << "Ganhei " << meu << " contra " << dele << ’!’ << endl;
else
cout << "Empat´amos " << meu << " a " << dele << ’.’ << endl;
catch(Erro& erro)
Definido na linha 95 do ficheiro mensageiro.H.
5.2.2
Documentac¸ ˜ao do Construtor & Destrutor
5.2.2.1 IPC::Mensageiro::Mensageiro (key t const chave = getuid())
Contrutor de um mensageiro.
Podem-se criar mensageiros de dois tipos: restritos ou n˜ao restritos. O primeiro tipo consegue-se n˜ao passando qualquer argumento ao construtor e restringe o emparelhamento dos processos a processos do mesmo utilizador. O segundo tipo ´e mais geral, pois permite o emparelhamento de processos de utilizadores arbitr´arios da mesma m´aquina, mas exige a passagem de uma chave ipc que deve ser ´unica para cada tipo de aplicac¸ ˜ao prevista.
Definido na linha 3 do ficheiro mensageiro.C.
5.2.2.2 IPC::Mensageiro:: Mensageiro ()
Destrutor.
Definido na linha 63 do ficheiro mensageiro.C.
5.2.3
Documentac¸ ˜ao dos m´etodos
5.2.3.1 char IPC::Mensageiro::charRecebido () [inline]
Devolve um caractere recebido.
Definido na linha 19 do ficheiro mensageiro impl.H.
5.2.3.2 void IPC::Mensageiro::envia (char const c) [inline]
Envia um caractere ao outro.
Definido na linha 31 do ficheiro mensageiro impl.H.
5.2.3.3 void IPC::Mensageiro::envia (int const valor) [inline]
Envia um inteiro ao outro.
Definido na linha 27 do ficheiro mensageiro impl.H.
14 Pacotes Documentac¸ ˜ao da classe
5.2.3.4 void IPC::Mensageiro::envia (string const & mensagem) [inline]
Envia uma cadeia de caracteres ao outro.
Definido na linha 23 do ficheiro mensageiro impl.H. Referenciado por Mensageiro(), e Mensageiro().
5.2.3.5 string IPC::Mensageiro::identificadorDoOutro () [inline]
Devolve o identificador ´unico do outro processo, com o qual o corrente est´a emparelhado atrav´es do men-sageiro.
Definido na linha 6 do ficheiro mensageiro impl.H.
5.2.3.6 int IPC::Mensageiro::intRecebido () [inline]
Devolve um inteiro recebido do outro.
Definido na linha 15 do ficheiro mensageiro impl.H. Referenciado por Mensageiro().
5.2.3.7 string IPC::Mensageiro::meuIdentificador () [inline]
Devolve um identificador ´unico para o processo, que consiste no nome do utilizador seguido do n ´umero do processo.
Definido na linha 1 do ficheiro mensageiro impl.H.
5.2.3.8 string IPC::Mensageiro::stringRecebida () [inline]
Devolve uma cadeia de caracteres recebida do outro. Definido na linha 11 do ficheiro mensageiro impl.H. Referenciado por Mensageiro().
A documentac¸ ˜ao para esta classe foi gerada a partir dos seguintes ficheiros:
mensageiro.H mensageiro impl.H mensageiro.C
Pacotes Documentac¸ ˜ao do ficheiro
6.1
Referencia ao ficheiro erros.H
Ficheiro de interface do m ´odulo erros.
#include cerrno
Namespaces
namespaceIPCComponentes
classIPC::Erro6.1.1
Descric¸ ˜ao detalhada
Ficheiro de interface do m ´odulo erros. Define a classeIPC::Erro.16 Pacotes Documentac¸ ˜ao do ficheiro
6.2
Referencia ao ficheiro ipc.H
Ficheiro de interface da biblioteca.
#include IPC/mensageiro.H
Namespaces
namespaceIPC6.2.1
Descric¸ ˜ao detalhada
Ficheiro de interface da biblioteca.Usa-se se n˜ao se pretender discriminar entre os m ´odulos f´ısicos realmente necess´arios. Definido no ficheiroipc.H.
6.3
Referencia ao ficheiro mensageiro.C
#include IPC/mensageiro.H
18 Pacotes Documentac¸ ˜ao do ficheiro
6.4
Referencia ao ficheiro mensageiro.H
Ficheiro de interface do m ´odulo mensageiro.
#include string #include cstdio #include Extra/string.H #include sys/msg.h #include unistd.h #include pwd.h #include IPC/erros.H
#include IPC/mensageiro impl.H
Namespaces
namespaceIPCComponentes
classIPC::Mensageiro
Definic¸ ˜ao de macros
#define SVID SOURCE6.4.1
Descric¸ ˜ao detalhada
Ficheiro de interface do m ´odulo mensageiro. Define a classeIPC::Mensageiro.
Definido no ficheiromensageiro.H.
6.4.2
Documentac¸ ˜ao da macro
6.4.2.1 #define SVID SOURCE
Definido na linha 6 do ficheiro mensageiro.H.
6.5
Referencia ao ficheiro mensageiro impl.H
20 Pacotes Documentac¸ ˜ao do ficheiro
6.6
Referencia ao ficheiro string.H
#include cstdio
Func¸ ˜oes
string&operator+=(string& c, int n)
Acrescenta a representac¸ ˜ao em base decimal de um inteiro a uma cadeia.
stringoperator+(string c, int n)
Devolve a concatenac¸ ˜ao de uma cadeia com a representac¸ ˜ao na base decimal de um inteiro.
stringoperator+(int n, string const& c)
Devolve a concatenac¸ ˜ao da representac¸ ˜ao na base decimal de um inteiro com uma cadeia.
6.6.1
Documentac¸ ˜ao da func¸ ˜ao
6.6.1.1 string operator+ (int n, string const & c) [inline]
Devolve a concatenac¸ ˜ao da representac¸˜ao na base decimal de um inteiro com uma cadeia. Definido na linha 24 do ficheiro string.H.
6.6.1.2 string operator+ (string c, int n) [inline]
Devolve a concatenac¸ ˜ao de uma cadeia com a representac¸ ˜ao na base decimal de um inteiro. Definido na linha 18 do ficheiro string.H.
6.6.1.3 string & operator+= (string & c, int n) [inline]
Acrescenta a representac¸ ˜ao em base decimal de um inteiro a uma cadeia. Definido na linha 10 do ficheiro string.H.
Mensageiro IPC::Mensageiro,13 charRecebido IPC::Mensageiro,13 envia IPC::Mensageiro,13 Erro IPC::Erro,9,10 identificadorDoOutro IPC::Mensageiro,14 intRecebido IPC::Mensageiro,14 IPC,7 IPC::Erro,9 Erro,9,10
operator string const,10
IPC::Mensageiro,11 Mensageiro,13 charRecebido,13 envia,13 identificadorDoOutro,14 intRecebido,14 Mensageiro,13 meuIdentificador,14 stringRecebida,14 Mensageiro IPC::Mensageiro,13 meuIdentificador IPC::Mensageiro,14
operator string const IPC::Erro,10 operator+ string.H,20 operator+= string.H,20 string.H operator+,20 operator+=,20 stringRecebida IPC::Mensageiro,14