aboutsummaryrefslogtreecommitdiff
path: root/examples/TestIvy.java
diff options
context:
space:
mode:
Diffstat (limited to 'examples/TestIvy.java')
-rw-r--r--examples/TestIvy.java127
1 files changed, 127 insertions, 0 deletions
diff --git a/examples/TestIvy.java b/examples/TestIvy.java
new file mode 100644
index 0000000..802f982
--- /dev/null
+++ b/examples/TestIvy.java
@@ -0,0 +1,127 @@
+package fr.dgac.ivy ;
+
+import java.awt.* ;
+import java.awt.event.* ;
+
+/**
+ * toy tool to probe the Ivy software bus.
+ * it relies on the AWT, and is less useable than TestIvySwing, which should
+ * be preferred.
+ *
+ * @see fr.dgac.ivy.TestIvySwing
+ * @author François-Régis Colin
+ * @author Yannick Jestin
+ * @author <a href="http://www.tls.cena.fr/products/ivy/">http://www.tls.cena.fr/products/ivy/</a>
+ *
+ * CHANGELOG
+ * 1.0.10:
+ * - System.exit on bus die
+ */
+
+class TestIvy extends Panel implements IvyApplicationListener {
+ private Ivy bus ;
+ private String regexp="";
+ private TextField tfRegex, tfSend ;
+ private TextArea ta ;
+ private Button buApply, buSend, buClear ;
+ private java.text.SimpleDateFormat format = new
+ java.text.SimpleDateFormat("hh:mm:ss");
+ private int regexp_id;
+
+ public TestIvy() throws IvyException {
+ super(new BorderLayout());
+ ta = new TextArea();
+ ta.setEditable(false);
+ add(ta,BorderLayout.CENTER);
+ Panel p = new Panel(new BorderLayout());
+ p.add(new Label("Regex:"),BorderLayout.WEST);
+ tfRegex = new TextField(regexp);
+ tfRegex.addActionListener(new REGCB());
+ p.add(tfRegex,BorderLayout.CENTER);
+ add(p,BorderLayout.NORTH);
+ p = new Panel(new BorderLayout());
+ p.add(new Label("Msg:"),BorderLayout.WEST);
+ tfSend = new TextField("");
+ tfSend.addActionListener(new SENDCB());
+ p.add(tfSend,BorderLayout.CENTER);
+ add(p,BorderLayout.SOUTH);
+ bus = new Ivy("JAVATESTBUS","Testbus is ready",this);
+ bus.start(null);
+ append( "Ivy Domain: "+ bus.getDomain(null) );
+ }
+
+ public static Frame f;
+
+ public static void main(String[] args) throws IvyException {
+ TestIvy tb = new TestIvy();
+ f = new Frame("TestIvy");
+ f.addWindowListener( tb.new WCCB(f,tb)) ;
+ f.add(tb, BorderLayout.CENTER);
+ f.pack();
+ f.setVisible(true);
+ }
+
+ public void connect(IvyClient client) {
+ append(client.getApplicationName() + " connected " );
+ }
+
+ public void disconnect(IvyClient client) {
+ append(client.getApplicationName() + " disconnected " );
+ }
+ public void die(IvyClient client, int id) {
+ f.dispose();
+ System.exit(0);
+ }
+ public void directMessage(IvyClient client, int id, String arg) {
+ append(client.getApplicationName() + " direct Message "+ id + arg );
+ }
+
+ class REGCB implements ActionListener, IvyMessageListener {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ bus.unBindMsg(regexp_id);
+ } catch (IvyException ie) {
+ System.out.println("Big badaboum"); // this should not happen
+ }
+ regexp=tfRegex.getText();
+ regexp.trim();
+ regexp_id = bus.bindMsg(regexp,this);
+ tfRegex.setText("");
+ }
+ public void receive(IvyClient client, String[] args) {
+ String out="client " + client.getApplicationName() + " envoie: [ ";
+ for (int i=0;i<args.length;i++)
+ out=out+args[i]+ ((i<args.length-1)?" , ":"");
+ out = out + " ]";
+ append(out);
+ }
+ }
+
+ class SENDCB implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ int count;
+ String tosend = tfSend.getText();
+ tfSend.setText("");
+ count = bus.sendMsg(tosend);
+ append("Sending '" + tosend + "' count " + count );
+ }
+ }
+
+ private void append(String s) {
+ ta.append("[" + format.format(new java.util.Date()) + "] "+ s + "\n");
+ }
+
+ class WCCB extends WindowAdapter {
+ private Frame f;
+ public WCCB(Frame f, TestIvy b) { this.f=f; }
+ public void windowClosing(WindowEvent e) {
+ f.setVisible(false);
+ bus.stop();
+ bus = null;
+ f.dispose();
+ System.exit(0);
+ }
+ }
+
+} // class TestIvy
+// EOF