<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=DCERouter_Programmer%27s_Guide</id>
	<title>DCERouter Programmer&#039;s Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=DCERouter_Programmer%27s_Guide"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;action=history"/>
	<updated>2026-07-21T22:52:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=29346&amp;oldid=prev</id>
		<title>Marie.o: DCE Router Programmer&#039;s Guide moved to DCERouter Programmer&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=29346&amp;oldid=prev"/>
		<updated>2012-01-04T16:48:19Z</updated>

		<summary type="html">&lt;p&gt;DCE Router Programmer&amp;#039;s Guide moved to DCERouter Programmer&amp;#039;s Guide&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:48, 4 January 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Marie.o</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=9915&amp;oldid=prev</id>
		<title>AVJohn at 10:08, 12 April 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=9915&amp;oldid=prev"/>
		<updated>2008-04-12T10:08:29Z</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&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 10:08, 12 April 2008&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;[[Category: Programmer&amp;#039;s Guide]]&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;[[Category: Programmer&amp;#039;s Guide]]&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;&lt;/ins&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;&#039;&#039;&#039;[[Developers Guide]] is the most recent information regarding architecure and getting started with development.&#039;&#039;&#039;&lt;/ins&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;&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[pluto_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&amp;#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&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;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[pluto_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&amp;#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&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;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[pluto_main database]] or in the **pluto.conf** file.&amp;lt;/p&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;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[pluto_main database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AVJohn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=9668&amp;oldid=prev</id>
		<title>Marie.o: modified reference to pluto_main instead of LinuxMCE main</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=9668&amp;oldid=prev"/>
		<updated>2008-03-13T08:13:42Z</updated>

		<summary type="html">&lt;p&gt;modified reference to pluto_main instead of LinuxMCE main&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&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 08:13, 13 March 2008&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;[[Category: Programmer&amp;#039;s Guide]]&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;[[Category: Programmer&amp;#039;s Guide]]&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/del&gt;database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/ins&gt;database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&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;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;gt;&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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/del&gt;database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/ins&gt;database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Marie.o</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=7821&amp;oldid=prev</id>
		<title>Hari at 13:57, 20 December 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=7821&amp;oldid=prev"/>
		<updated>2007-12-20T13:57:39Z</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&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 13:57, 20 December 2007&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;[[Category: Programmer&#039;s Guide]]&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[LinuxMCE_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&amp;#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&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;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[LinuxMCE_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&amp;#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&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;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[LinuxMCE_main database]] or in the **pluto.conf** file.&amp;lt;/p&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;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[LinuxMCE_main database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hari</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=3536&amp;oldid=prev</id>
		<title>Jerry finn at 08:59, 19 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=3536&amp;oldid=prev"/>
		<updated>2007-03-19T08:59:29Z</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&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 08:59, 19 March 2007&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/del&gt;database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/ins&gt;database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well as a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-ins into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&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;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating data-grids.  Orbiters generate data-grid requests when they want to display data-grids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of data-grids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all data-grid processing to another plug-in that actually generates the data-grids.  This way the building of the data-grids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;gt;&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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/del&gt;database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/ins&gt;database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=3352&amp;oldid=prev</id>
		<title>Juliet at 13:03, 16 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=3352&amp;oldid=prev"/>
		<updated>2007-03-16T13:03:23Z</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&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 13:03, 16 March 2007&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/del&gt;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[pluto_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in&#039;s &lt;/del&gt;into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[pluto_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as &lt;/ins&gt;a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ins &lt;/ins&gt;into it&#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;gt;&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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrids&lt;/del&gt;.  Orbiters generate &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrid &lt;/del&gt;requests when they want to display &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrids &lt;/del&gt;with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrids&lt;/del&gt;.  The Datagrid plug-in is, therefore, a general purpose &quot;router&quot; like DCERouter is, and it hands off all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrid &lt;/del&gt;processing to another plug-in that actually generates the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrids&lt;/del&gt;.  This way the building of the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datagrids &lt;/del&gt;is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;gt;&lt;/div&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;&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grids&lt;/ins&gt;.  Orbiters generate &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grid &lt;/ins&gt;requests when they want to display &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grids &lt;/ins&gt;with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grids&lt;/ins&gt;.  The Datagrid plug-in is, therefore, a general purpose &quot;router&quot; like DCERouter is, and it hands off all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grid &lt;/ins&gt;processing to another plug-in that actually generates the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grids&lt;/ins&gt;.  This way the building of the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data-grids &lt;/ins&gt;is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;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;&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[pluto_main database]] or in the **pluto.conf** file.&amp;lt;/p&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;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[pluto_main database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juliet</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=1865&amp;oldid=prev</id>
		<title>Wikiadmin: Imported document</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=DCERouter_Programmer%27s_Guide&amp;diff=1865&amp;oldid=prev"/>
		<updated>2006-06-05T16:42:52Z</updated>

		<summary type="html">&lt;p&gt;Imported document&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&amp;quot;#FFCFCF&amp;quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;DCE Router is actually a very simple program, and consists of only 1 class: DCERouter.  This class reads in the configuration for the installation from the [[pluto_main database]] to open a socket for incoming connections.  When devices connect to it, DCE Router gives them a copy of their own configuration data, as well a list of all the other devices in the installation.  Before accepting incoming connections, it first loads all the plug-in&amp;#039;s into it&amp;#039;s own name space.  If your device is loaded as a Plug-in, rather than the main() function being called, the Register() function will be called, and you will be passed a pointer to the DCERouter class.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You use the pointer to the DCERouter class to do primarily 2 things:  First, you can [[Message Interceptors]].  This means that you want your plug-in to get any messages that meet a certain criteria before they are forwarded to the actual destination.  You also can get a list of the other loaded plug-ins, and pointers to their primary class, derived from Command_Impl (for command implementation).  In this way plug-ins can call each other&amp;#039;s member functions directly and implement their own plug-in architecture.  For example, the **Datagrid plug-in** receives any messages related to generating datagrids.  Orbiters generate datagrid requests when they want to display datagrids with dynamic information, such as a list of devices, or what TV shows are playing.  The Datagrid Plug-in exposes its own plug-in architecture allowing other plug-ins to **register with it** to handle certain types of datagrids.  The Datagrid plug-in is, therefore, a general purpose &amp;quot;router&amp;quot; like DCERouter is, and it hands off all datagrid processing to another plug-in that actually generates the datagrids.  This way the building of the datagrids is logically handled in the appropriate plug-in.  The Plug-in that is responsible for TV viewing will be the one that registers with the Datagrid Plug-in to build tv-related data grids.  The Media Plug-in also implements its own plug-in architecture for media devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To run DCERouter, you only need to be sure it has the database connection parameters so it has access to the [[pluto_main database]] or in the **pluto.conf** file.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
</feed>