<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=Reference_Material</id>
	<title>Reference Material - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=Reference_Material"/>
	<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Reference_Material&amp;action=history"/>
	<updated>2026-04-03T23:24:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Reference_Material&amp;diff=4247&amp;oldid=prev</id>
		<title>Digimer at 19:42, 11 February 2012</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Reference_Material&amp;diff=4247&amp;oldid=prev"/>
		<updated>2012-02-11T19:42:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:42, 11 February 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&quot;text&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Creating my DBus bus for the TCSP server and clients.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Creating my DBus bus for the TCSP server and clients.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         cause trouble as it would be hard to know what Interface in particular to call the Method on. So yeah,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         cause trouble as it would be hard to know what Interface in particular to call the Method on. So yeah,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         just use it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         just use it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  DBus stuff;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  DBus stuff;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l128&quot;&gt;Line 128:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 128:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dbus-monitor output format;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dbus-monitor output format;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;message_type&amp;gt;	&amp;lt;unix_time&amp;gt;	&amp;lt;?serial_number?&amp;gt;	&amp;lt;?&amp;gt;	&amp;lt;Object_Path&amp;gt;	&amp;lt;Interface_Name&amp;gt;	&amp;lt;?Arguments?&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;message_type&amp;gt;	&amp;lt;unix_time&amp;gt;	&amp;lt;?serial_number?&amp;gt;	&amp;lt;?&amp;gt;	&amp;lt;Object_Path&amp;gt;	&amp;lt;Interface_Name&amp;gt;	&amp;lt;?Arguments?&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{footer}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{footer}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key an_wiki-mediawiki-:diff:1.41:old-422:rev-4247:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Reference_Material&amp;diff=422&amp;oldid=prev</id>
		<title>Digimer: Created page with &#039;{{dbtut_header}}  Below are my raw notes I took for my own use before deciding to write a general-consumption tutorial. These will disappear as the document grows and will be com…&#039;</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Reference_Material&amp;diff=422&amp;oldid=prev"/>
		<updated>2009-10-12T01:37:55Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;{{dbtut_header}}  Below are my raw notes I took for my own use before deciding to write a general-consumption tutorial. These will disappear as the document grows and will be com…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Páàjì titun&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{dbtut_header}}&lt;br /&gt;
&lt;br /&gt;
Below are my raw notes I took for my own use before deciding to write a general-consumption tutorial. These will disappear as the document grows and will be completely removed prior to the first draft being released.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;br /&gt;
 Creating my DBus bus for the TCSP server and clients.&lt;br /&gt;
 - Create the system bus &amp;#039;org.tle-bu.tcsp&amp;#039;&lt;br /&gt;
  \- Listen on unix socket file as defined in &amp;#039;tle-bu.conf&amp;#039;.&lt;br /&gt;
 - &amp;quot;Bus Names&amp;quot; are the names of connections on the bus, NOT the name of the bus itself.&lt;br /&gt;
  \- Each bus name will reflect a connected client.&lt;br /&gt;
 - To specify a particular method call on a given object instance, the structure is:&lt;br /&gt;
   \- Address -&amp;gt; [Bus Name] -&amp;gt; Path -&amp;gt; Interface -&amp;gt; Method&lt;br /&gt;
      - [Bus Name] is optional and only needed when there using the dbus-daemon. Direct connections don&amp;#039;t&lt;br /&gt;
        require the bus name, as there is no Bus daemon).&lt;br /&gt;
      - The Interface is also somewhat optional, but not using it when the Method name could be ambiguous could&lt;br /&gt;
        cause trouble as it would be hard to know what Interface in particular to call the Method on. So yeah,&lt;br /&gt;
        just use it.&lt;br /&gt;
&lt;br /&gt;
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&lt;br /&gt;
 DBus stuff;&lt;br /&gt;
 - valid Object Paths; start with &amp;#039;/&amp;#039;, no double-slash, no trailing slash. &lt;br /&gt;
  |- /org/freedesktop/DBus/Local is reserved.&lt;br /&gt;
  |- All elements must use only &amp;#039;[a-z][A-Z][0-9]_&amp;#039;&lt;br /&gt;
  \- Is heirarchal, like a FS.&lt;br /&gt;
 - valid Interface Names; Must contain at least two elements.&lt;br /&gt;
  |- Elements separated by &amp;#039;.&amp;#039;, no double-period, no beginning or trailing period.&lt;br /&gt;
  |- When type STRING, must be UTF-8, elements must only use &amp;#039;[a-z][A-Z][0-9]_&amp;#039;.&lt;br /&gt;
  \- org.freedesktop.DBus.Local is reserved.&lt;br /&gt;
 - valid Bus Names; All the same restrictions as Interface names, except;&lt;br /&gt;
  |- May use &amp;#039;-&amp;#039; in element names.&lt;br /&gt;
  |- May beging with a colon (:). This defines unique connection names.&lt;br /&gt;
  \- A Bus name stays with the connection it&amp;#039;s entire life.&lt;br /&gt;
 - Member names must not begin with a period, or have a period anywhere in it&amp;#039;s name.&lt;br /&gt;
  \- Must contain only &amp;#039;[a-z][A-Z][0-9]_&amp;#039; characters.&lt;br /&gt;
 Because an element can&amp;#039;t contain a period, the last item in an Interface string is known to be the element.&lt;br /&gt;
  \- ie: org.freedesktop.DBus.StartServiceByName -&amp;gt; org.freedesktop.DBus = Interface, StartServiceByName = element&lt;br /&gt;
 Each line ends in &amp;#039;\r\n&amp;#039;.&lt;br /&gt;
 Server addresses are in the format &amp;#039;transport:(key=value(,key2=value))&amp;#039;.&lt;br /&gt;
  \- ie: &amp;#039;unix:path=/tmp/dbus-test&amp;#039; = unix socket with the path /tmp/dbus-test&lt;br /&gt;
 --&lt;br /&gt;
 I want to listen to the system bus.&lt;br /&gt;
  |- This Object path should be in the environment var DBUS_SYSTEM_BUS_ADDRESS&lt;br /&gt;
  |- If that var is not set, look in the socket unix:path=/var/run/dbus/system_bus_socket&lt;br /&gt;
  \- Look for &amp;#039;.service&amp;#039; files? &amp;#039;/usr/share/dbus-1/services/*.service&amp;#039; on Ubuntu&lt;br /&gt;
 - This seems to be static and has info on the above: # cat /etc/dbus-1/system.conf&lt;br /&gt;
 - &amp;quot;Bus Names&amp;quot; are the names of connections on the bus, NOT the name of the bus itself.&lt;br /&gt;
 - When a bus comes up, it&amp;#039;s assigned a &amp;quot;unique connection name&amp;quot;, which you can see because it starts with&lt;br /&gt;
   a colon (ie: &amp;#039;:34-907&amp;#039;). If a given bus name is closed and another with the same name is started, it will&lt;br /&gt;
   be unique because of this.&lt;br /&gt;
 - Names (elements?) on a given bus, however, can be relinquished and then picked back up by something else.&lt;br /&gt;
 - An &amp;#039;object&amp;#039; is a DBus communication end-point. To avoid this, use a unique name, not a well-known one.&lt;br /&gt;
 - Every bus has an object itself, which represents that bus. Information about the bus can be collect by sending&lt;br /&gt;
   a request to this object.&lt;br /&gt;
 - DBus &amp;quot;Proxies&amp;quot; are like APIs for a given language; they are the proxy bindings used to talk to a given bus.&lt;br /&gt;
 - It is general practice to use an object path based on a domain you use to avoid stepping on other program&amp;#039;s&lt;br /&gt;
   toes. Ie: &amp;#039;/org/tle_bu&amp;#039; or &amp;#039;/com/alteeve&amp;#039;. This is not a requirement though, and any object path name(s) can&lt;br /&gt;
   be used.&lt;br /&gt;
 - Objects have two &amp;#039;Members&amp;#039;; they are &amp;#039;Methods&amp;#039; and &amp;#039;Signals&amp;#039;, referred to by a name (ie: &amp;#039;OnClicked&amp;#039;, etc).&lt;br /&gt;
   - Methods; Operations that can be invoked on an object with optional input (&amp;quot;In Parameters&amp;quot;) and output&lt;br /&gt;
              (&amp;quot;return values&amp;quot; or &amp;quot;out parameters&amp;quot;).&lt;br /&gt;
   - Signals; Broadcasts from an object (which may contain a &amp;quot;payload&amp;quot;) to zero or more interested listeners.&lt;br /&gt;
 - Interfaces; a group of Objects (more details, less C++/Java/Qt comparisons...)&lt;br /&gt;
 - Proxies are (generally) provided by a given program language&amp;#039;s bindings (Net::DBus in perl). In perl parlance,&lt;br /&gt;
   this is a file handle to a remote object. When acting on it, it appears as a local filehandle or variable, but&lt;br /&gt;
   in fact it is making a call to the remote object, waiting for the reply and processing the reply transparently.&lt;br /&gt;
 - When an app connects to a given bus, it is assigned a &amp;#039;Unique Connection Name&amp;#039; which starts with a colon (:).&lt;br /&gt;
   (ie: &amp;#039;:34-907&amp;#039;). The number means nothing in itself, it serves to be unique only. If a name is assigned to&lt;br /&gt;
   an application, it is said to &amp;quot;Own&amp;quot; that name (ie: &amp;#039;/org/tle_bu/FooBar&amp;#039;, where &amp;#039;FooBar&amp;#039; is the owned name).&lt;br /&gt;
   This name to UCN mapping is very similar to domain-to-IP mapping. &amp;#039;FooBar&amp;#039; means nothing in itself, but it&amp;#039;s&lt;br /&gt;
   value is in it&amp;#039;s mapping to &amp;#039;:34-907&amp;#039;. Like a domain, this allows to look for an Object without needing to know&lt;br /&gt;
   what the UCN is or if it&amp;#039;s changed. Other applications that then talk to the UCN or owned name talk to the&lt;br /&gt;
   owning application.&lt;br /&gt;
   - If the owning application of a given name closes or crashes, the operating system will send out a&lt;br /&gt;
     notification message (signal?). Applications can then watch for these signals and react appropriately. This&lt;br /&gt;
     is refered to as &amp;#039;lifecycle tracking&amp;#039;.&lt;br /&gt;
   - This can also be used to make sure an application is only running once. Your application could check to see&lt;br /&gt;
     if &amp;#039;FooBar&amp;#039; already has an owner and, if so, exit (or do whatever).&lt;br /&gt;
 - During the establishment of a symetrical connection, applications are either a Server, listening for a&lt;br /&gt;
   connection, or a client, which sends the connection request. After the connection is up, this Client/Server&lt;br /&gt;
   concept is no longer relevant.&lt;br /&gt;
   - Most often, you app will connect as a client to the &amp;#039;dbus-daemon&amp;#039;.&lt;br /&gt;
 - A DBus &amp;#039;Address&amp;#039; is where a server listens for connections from clients. An address could be a Unix socket&lt;br /&gt;
   (ie: unix:path=/path/to/socket), a TCP address (format?) or any other transport later defined by the DBus spec.&lt;br /&gt;
   If you&amp;#039;re a corner case and not using the &amp;#039;dbus-daemon&amp;#039;, you will need to pre-define where the server will&lt;br /&gt;
   watch for connections.&lt;br /&gt;
 - To specify a particular method call on a given object instance, the structure is:&lt;br /&gt;
   \- Address -&amp;gt; [Bus Name] -&amp;gt; Path -&amp;gt; Interface -&amp;gt; Method&lt;br /&gt;
      - [Bus Name] is optional and only needed when there using the dbus-daemon. Direct connections don&amp;#039;t&lt;br /&gt;
        require the bus name, as there is no Bus daemon).&lt;br /&gt;
      - The Interface is also somewhat optional, but not using it when the Method name could be ambiguous could&lt;br /&gt;
        cause trouble as it would be hard to know what Interface in particular to call the Method on. So yeah,&lt;br /&gt;
        just use it.&lt;br /&gt;
 - Messages; There are four types, and with sufficiently advanced bindings (Net::DBus?), they will not be a &lt;br /&gt;
   concern. However...&lt;br /&gt;
   |- Method call messages asking to invoke a method on an object (like calling an SR)&lt;br /&gt;
   |- Method return messages returning the results of an invoked object (like the return from a SR).&lt;br /&gt;
   |- Error messages returning an exception caused by invoking a method.&lt;br /&gt;
   \- Signal messages are notifications of a signal having been emitted.&lt;br /&gt;
   - So then, you send a method call message, and wait for a reply message or an error message. Or, you listen for&lt;br /&gt;
     signal messages and do something when they show up.&lt;br /&gt;
   - A message consists of a header (made up of fields) and a body (containing arguments).&lt;br /&gt;
     - A header contains the routing info (sender bus, destination bus, method or signal name, body type signature,&lt;br /&gt;
       etc). The body type signature is an ascii string describing the body&amp;#039;s binary data. Ie: the type code &amp;#039;ii&amp;#039;&lt;br /&gt;
       indicates that the body is two 32-bit integers.&lt;br /&gt;
     - The body is the payload.&lt;br /&gt;
 - Calling a method (see: http://dbus.freedesktop.org/doc/dbus-tutorial.html -&amp;gt; Behind the scenes);&lt;br /&gt;
   - A method call consists of two messages; a method call sent from A to B with a unique serial number, and a&lt;br /&gt;
     reply from B to A referencing the serial number so that A can match reply messages to given calls.&lt;br /&gt;
     - These calls are handled by the bus daemon.&lt;br /&gt;
     - The calling method can contain data to be given to the destination method, and the reply message can be&lt;br /&gt;
       an error or returned data.&lt;br /&gt;
     - The dbus-daemon never alters the order it delivers method calls (like a fifo) but it can not enforce how&lt;br /&gt;
       or in what order reply messages come back. This is where matching the serial number on reply messages to&lt;br /&gt;
       the serial number of the calling method is important.&lt;br /&gt;
   - A signal message consists on one message sent from one method to zero or more listening processes&lt;br /&gt;
     (broadcast).&lt;br /&gt;
     - A signal may have a payload, but it does not have a return value. It is a broadcast only.&lt;br /&gt;
     - Listening processes register with the bus-daemon using match rules, and when the daemon receives a signal&lt;br /&gt;
       that matches those rules, the listening process is notified. The sender has no knowledge of this and&lt;br /&gt;
       frankly, doesn&amp;#039;t give a damn.&lt;br /&gt;
     - &lt;br /&gt;
 - MADI: org.freedesktop.DBus.Introspectable takes no arguments and returns an XML string describing the&lt;br /&gt;
   interfaces, methods and signals of an object.&lt;br /&gt;
&lt;br /&gt;
 -=-=-=-=-&lt;br /&gt;
 dbus-monitor output format;&lt;br /&gt;
 &amp;lt;message_type&amp;gt;	&amp;lt;unix_time&amp;gt;	&amp;lt;?serial_number?&amp;gt;	&amp;lt;?&amp;gt;	&amp;lt;Object_Path&amp;gt;	&amp;lt;Interface_Name&amp;gt;	&amp;lt;?Arguments?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{footer}}&lt;/div&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
</feed>