From d0afba319f95f0059d201c6b7cbfbc3322f2c0f6 Mon Sep 17 00:00:00 2001 From: jestin Date: Tue, 1 Aug 2006 09:24:10 +0000 Subject: Adding a correct example of translator in XML documentation update cleanup of IvyClient for Ping Pong --- doc/ivy-java.sgml | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'doc/ivy-java.sgml') diff --git a/doc/ivy-java.sgml b/doc/ivy-java.sgml index 0e4d233..a7791c5 100644 --- a/doc/ivy-java.sgml +++ b/doc/ivy-java.sgml @@ -837,7 +837,58 @@ unsubscription will take place. bus.sendMsg("MyRequest ID="+id+" QUER=2+2"); + +how to quit the application ? + +If your application decides to quit or leave the bus, the safest way is to +invoque Ivy.stop(). This will send a clean goodby message +to the other agents, close the sockets, end the threads, etc. However, you can +en the JVM performing a System.exit(int) and let the +other agents realize that you've gone. + + +If some other agents wants you to quit the bus, it will send you a die +message. The protocol will first run you +IvyApplicationListener.die(), if any, then +perform some socket/thread clean up, and disconnect you from the bus. As a +good citizen on the Ivy bus, you should take the appropriate measures top stop +your application within the IvyApplicationListener.die() +method, for instance run System.exit() or make all you +thread stop, disposing your toplevel Swing Frames. Here is an example of how to do it: + +import fr.dgac.ivy.* ; +import javax.swing.*; + +public class EndApp extends IvyApplicationAdapter { + + public static void main(String[] args) throws IvyException { + Ivy bus=new Ivy("EndApp","EndApp ready",null); + EndApp e = new EndApp(bus); // a frame is opened, and the Swing Thread is started + bus.addApplicationListener(e); + bus.start(Ivy.getDomain(null)); // Ivy threads are up and running + // the control flow won't stop until the end of all above threads + } + + private Ivy bus; + JFrame f; + + public EndApp(Ivy b) { + this.bus=b; + f=new JFrame("test"); + f.getContentPane().add(new JLabel("some label"),java.awt.BorderLayout.CENTER); + f.pack(); + f.setVisible(true); + } + + public void die(IvyClient client, int id,String msgarg) { + System.out.println("received die msg from " + client.getApplicationName()); + f.dispose(); // closes the only window, thus quitting the swing thread + } // end of die callback, the Ivy threads are stopped + +} + + -- cgit v1.1