Salve GUJeiros!
Estou com algumas dúvidas e gostaria de pedir uma ajuda:
Vou implementar uma aplicação P2P utilizando JXTA para a troca de informações, mas precisamente anúncios de Web Services, entre os computadores da rede.
O código abaixo mostra o envio de uma mensagem utilizando Pipe (retirei algumas partes para diminuir o código).
Minhas dúvidas são as seguintes:
O método public void outputPipeEvent(OutputPipeEvent event) é um listener que ficará escutando os eventos de saída no Pipe.
Este método é uma thread?
O código que está sendo executado dentro dele está rodando em uma thread?
Minha aplicação poderia estar, por exemplo, recebendo uma mensagem enquanto o código desse método é executado?
Qual seria o propósito dos métodos?
synchronized (lock) {
lock.wait();
}
.
.
.
synchronized (lock) {
// done.
lock.notify();
}
Espero que tenham entendido as dúvidsa… qualquer coisa tento explicar melhor. hehe
Obrigado.
[]'s
public class PipeClient implements OutputPipeListener {
private final Object lock = new String("lock");
public static void main(String args[]) {
PipeClient client = new PipeClient(waitForRendezvous);
client.start();
}
public synchronized void start() {
try {
if (waitForRendezvous) {
System.out.println("Waiting for Rendezvous Connection");
//wait indefinitely until connected to a rendezvous
manager.waitForRendezvousConnection(0);
System.out.println("Connected to Rendezvous, attempting to create a
}
pipeService.createOutputPipe(pipeAdv, this);
try {
synchronized (lock) {
lock.wait();
}
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
} catch (IOException e) {
System.out.println("OutputPipe creation failure");
e.printStackTrace();
System.exit(-1);
}
}
public void outputPipeEvent(OutputPipeEvent event) {
outputPipe = event.getOutputPipe();
Message msg;
try {
outputPipe.send(msg);
System.out.println("message sent");
} catch (IOException e) {
System.out.println("failed to send message");
e.printStackTrace();
System.exit(-1);
}
stop();
}
public void stop() {
// Close the output pipe
outputPipe.close();
// Stop JXTA
manager.stopNetwork();
synchronized (lock) {
// done.
lock.notify();
}
}
}