<?xml version="1.0" encoding="iso-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title>Examples</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> <meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> <!-- xhtml,2,html --> <meta name="src" content="dbus-java.tex" /> <meta name="date" content="2016-03-02 10:34:00" /> <link rel="stylesheet" type="text/css" href="dbus-java.css" /> </head><body > <!--l. 1064--><div class="crosslinks"><p class="noindent">[<a href="dbus-javase13.html" >prev</a>] [<a href="dbus-javase13.html#taildbus-javase13.html" >prev-tail</a>] [<a href="#taildbus-javase14.html">tail</a>] [<a href="dbus-java.html# " >up</a>] </p></div> <h3 class="sectionHead"><span class="titlemark">14 </span> <a id="x41-4400014"></a>Examples</h3> <!--l. 1066--><p class="noindent" >As an example here are a complete set of interfaces for the bluemon<span class="footnote-mark"><a href="dbus-java42.html#fn24x0"><sup class="textsuperscript">24</sup></a></span><a id="x41-44001f24"></a> daemon, which communicates over D-Bus. These interfaces were all created by querying introspection data over the bus. </p><!--l. 1071--><p class="indent" > </p> <hr class="figure" /><div class="figure" > <a id="x41-4400221"></a> <div class="center" > <!--l. 1074--><p class="noindent" > </p> <div class="verbatim" id="verbatim-32"> package cx.ath.matthew.bluemon;  <br />import org.freedesktop.dbus.DBusInterface;  <br />import org.freedesktop.dbus.UInt32;  <br />public interface Bluemon extends DBusInterface  <br />{  <br />  public Triplet<String, Boolean, UInt32>  <br />  Status(String address);  <br />} </div> <!--l. 1084--><p class="nopar" ></p></div> <br /> <div class="caption" ><span class="id">Figure 21: </span><span class="content">cx/ath/matthew/bluemon/Bluemon.java</span></div><!--tex4ht:label?: x41-4400221 --> </div><hr class="endfigure" /> <!--l. 1089--><p class="indent" > </p> <hr class="figure" /><div class="figure" > <a id="x41-4400322"></a> <div class="center" > <!--l. 1092--><p class="noindent" > </p> <div class="verbatim" id="verbatim-33"> package cx.ath.matthew.bluemon;  <br />import org.freedesktop.dbus.DBusInterface;  <br />import org.freedesktop.dbus.DBusSignal;  <br />import org.freedesktop.dbus.exceptions.DBusException;  <br />public interface ProximitySignal extends DBusInterface  <br />{  <br />   public static class Connect extends DBusSignal  <br />   {  <br />      public final String address;  <br />      public Connect(String path, String address)  <br />                                 throws DBusException  <br />      {  <br />         super(path, address);  <br />         this.address = address;  <br />      }  <br />   }  <br />   public static class Disconnect extends DBusSignal  <br />   {  <br />      public final String address;  <br />      public Disconnect(String path, String address)  <br />                                 throws DBusException  <br />      {  <br />         super(path, address);  <br />         this.address = address;  <br />      }  <br />   }  <br />} </div> <!--l. 1121--><p class="nopar" ></p></div> <br /> <div class="caption" ><span class="id">Figure 22: </span><span class="content">cx/ath/matthew/bluemon/ProximitySignal.java</span></div><!--tex4ht:label?: x41-4400322 --> </div><hr class="endfigure" /> <!--l. 1126--><p class="indent" > </p> <hr class="figure" /><div class="figure" > <a id="x41-4400423"></a> <div class="center" > <!--l. 1129--><p class="noindent" > </p> <div class="verbatim" id="verbatim-34"> package cx.ath.matthew.bluemon;  <br />import org.freedesktop.dbus.Tuple;  <br />/** Just a typed container class */  <br />public final class Triplet <A,B,C> extends Tuple  <br />{  <br />   public final A a;  <br />   public final B b;  <br />   public final C c;  <br />   public Triplet(A a, B b, C c)  <br />   {  <br />      super(a, b, c);  <br />      this.a = a;  <br />      this.b = b;  <br />      this.c = c;  <br />   }  <br />} </div> <!--l. 1147--><p class="nopar" ></p></div> <br /> <div class="caption" ><span class="id">Figure 23: </span><span class="content">cx/ath/matthew/bluemon/Triplet.java</span></div><!--tex4ht:label?: x41-4400423 --> </div><hr class="endfigure" /> <!--l. 1152--><p class="indent" > </p> <hr class="figure" /><div class="figure" > <a id="x41-4400524"></a> <div class="center" > <!--l. 1155--><p class="noindent" > </p> <div class="verbatim" id="verbatim-35"> package cx.ath.matthew.bluemon;  <br />import org.freedesktop.dbus.DBusConnection;  <br />import org.freedesktop.dbus.DBusSigHandler;  <br />import org.freedesktop.dbus.DBusSignal;  <br />import org.freedesktop.dbus.UInt32;  <br />import org.freedesktop.dbus.exceptions.DBusException;  <br />  <br />public class Query {  <br />   public static void main(String[] args) {  <br />      String btid;  <br />      Triplet<String, Boolean, UInt32> rv = null;  <br />  <br />      if (0 == args.length) btid = "";  <br />      else btid = args[0];  <br />  <br />      DBusConnection conn = null;  <br />      try {  <br />         conn = DBusConnection.getConnection(DBusConnection.SYSTEM);  <br />      } catch (DBusException De) {  <br />         System.exit(1);  <br />      }  <br />      Bluemon b = (Bluemon) conn.getRemoteObject(  <br />            "cx.ath.matthew.bluemon.server",  <br />            "/cx/ath/matthew/bluemon/Bluemon", Bluemon.class);  <br />      try {  <br />         rv = b.Status(btid);  <br />      } catch (RuntimeException Re) {  <br />         System.exit(1);  <br />      }  <br />      String address = rv.a;  <br />      boolean status = rv.b;  <br />      int level = rv.c.intValue();  <br />  <br />      if (status)  <br />         System.out.println("Device "+address+  <br />                            " connected with level "+level);  <br />      else  <br />         System.out.println("Device "+address+" not connected");  <br />      conn.disconnect();  <br />   }  <br />} </div> <!--l. 1198--><p class="nopar" ></p></div> <br /> <div class="caption" ><span class="id">Figure 24: </span><span class="content">cx/ath/matthew/bluemon/Query.java</span></div><!--tex4ht:label?: x41-4400524 --> </div><hr class="endfigure" /> <!--l. 1203--><p class="indent" > </p> <hr class="figure" /><div class="figure" > <a id="x41-4400625"></a> <div class="center" > <!--l. 1206--><p class="noindent" > </p> <div class="verbatim" id="verbatim-36"> /* cx/ath/matthew/bluemon/Client.java */  <br />package cx.ath.matthew.bluemon;  <br />  <br />import org.freedesktop.dbus.DBusConnection;  <br />import org.freedesktop.dbus.DBusSigHandler;  <br />import org.freedesktop.dbus.DBusSignal;  <br />import org.freedesktop.dbus.exceptions.DBusException;  <br />  <br />public class Client implements DBusSigHandler  <br />{  <br />   public void handle(DBusSignal s)  <br />   {  <br />      if (s instanceof ProximitySignal.Connect)  <br />         System.out.println("Got a connect for "  <br />               +((ProximitySignal.Connect) s).address);  <br />      else if (s instanceof ProximitySignal.Disconnect)  <br />         System.out.println("Got a disconnect for "  <br />               +((ProximitySignal.Disconnect) s).address);  <br />   }  <br />   public static void main(String[] args)  <br />   {  <br />      System.out.println("Creating Connection");  <br />      DBusConnection conn = null;  <br />      try {  <br />         conn = DBusConnection  <br />                  .getConnection(DBusConnection.SYSTEM);  <br />      } catch (DBusException DBe) {  <br />         System.out.println("Could not connect to bus");  <br />         System.exit(1);  <br />      }  <br />  <br />      try {  <br />         conn.addSigHandler(ProximitySignal.Connect.class,  <br />         new Client());  <br />         conn.addSigHandler(ProximitySignal.Disconnect.class,  <br />         new Client());  <br />      } catch (DBusException DBe) {  <br />         conn.disconnect();  <br />         System.exit(1);  <br />      }  <br />   }  <br />} </div> <!--l. 1250--><p class="nopar" ></p></div> <br /> <div class="caption" ><span class="id">Figure 25: </span><span class="content">cx/ath/matthew/bluemon/Client.java</span></div><!--tex4ht:label?: x41-4400625 --> </div><hr class="endfigure" /> <!--l. 1255--><p class="indent" > </p> <!--l. 1257--><div class="crosslinks"><p class="noindent">[<a href="dbus-javase13.html" >prev</a>] [<a href="dbus-javase13.html#taildbus-javase13.html" >prev-tail</a>] [<a href="dbus-javase14.html" >front</a>] [<a href="dbus-java.html# " >up</a>] </p></div> <!--l. 1257--><p class="indent" > <a id="taildbus-javase14.html"></a> </p> </body></html>