aboutsummaryrefslogtreecommitdiff
path: root/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
diff options
context:
space:
mode:
Diffstat (limited to 'libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html')
-rw-r--r--libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html629
1 files changed, 629 insertions, 0 deletions
diff --git a/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html b/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
new file mode 100644
index 00000000..2da69e4f
--- /dev/null
+++ b/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
@@ -0,0 +1,629 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>libcontextsubscriber: ContextSubscriber::Provider Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespace_context_subscriber.html">ContextSubscriber</a>::<a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a>
+ </div>
+</div>
+<div class="contents">
+<h1>ContextSubscriber::Provider Class Reference</h1><!-- doxytag: class="ContextSubscriber::Provider" --><!-- doxytag: inherits="ContextSubscriber::QueuedInvoker" -->Connects to a group of properties via the help of a plugin.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="provider_8h-source.html">provider.h</a>&gt;</code>
+<p>
+
+<p>
+<a href="class_context_subscriber_1_1_provider-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Signals</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#cdb674013818463a88ce1799885258be">subscribeFinished</a> (QString key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#b814dacf147a7a59e9d441aebf59f0fd">valueChanged</a> (QString key, QVariant value)</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#063cf90bfd10f0bca4ed471f2c3a9c1e">subscribe</a> (const QString &amp;key)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedules a property to be subscribed to. <a href="#063cf90bfd10f0bca4ed471f2c3a9c1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a6aa042d4a006eb0930d7805139e801f">unsubscribe</a> (const QString &amp;key)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedules a property to be unsubscribed from when the main loop is entered the next time. <a href="#a6aa042d4a006eb0930d7805139e801f"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#c49f2c60c5cd741853499bfa9bd4b06d">instance</a> (const QString &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#620db59b31c197b98ee64369fd46b30e">plugin</a>, const QString &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#7ba9ec4710260ad732a85b6fa8000462">constructionString</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a singleton for the named <code>plugin</code> with the <code>constructionString</code>. <a href="#c49f2c60c5cd741853499bfa9bd4b06d"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b">PluginState</a> { <a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b429fabee9e8f6a76d3903db54c76bd46">INITIALIZING</a>,
+<a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b142be3c672ac9a6f3fe477b6eeb1acb1">READY</a>,
+<a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b6c35b4588f19b72888a9fca0b911642f">FAILED</a>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Private Slots</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#c87916df512014e5048eda7ae9daf3b9">onPluginReady</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates <code>pluginState</code> to <code>READY</code> and requests subscription for the keys that should be subscribed. <a href="#c87916df512014e5048eda7ae9daf3b9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#0b9a9637b9bdd8a3989cfccb14c8a24b">onPluginFailed</a> (QString error)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates <code>pluginState</code> to <code>FAILED</code> and signals subscribeFinished for keys we are trying to subscribe to. <a href="#0b9a9637b9bdd8a3989cfccb14c8a24b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#cbbadf63086f6b37ff9a9e8e64180032">onPluginSubscribeFinished</a> (QString key)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the call to <code>signalSubscribeFinished</code>. <a href="#cbbadf63086f6b37ff9a9e8e64180032"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#d18a07fdfb76dfa71f15f4b3e1200793">onPluginSubscribeFailed</a> (QString failedKey, QString error)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the call to <code>signalSubscribeFinished</code>, after logging a warning. <a href="#d18a07fdfb76dfa71f15f4b3e1200793"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#c04c071faa737c9b7f029ef0125f6a1c">onPluginValueChanged</a> (QString key, QVariant newValue)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the <code>newValue</code> for <code>key</code> received from the plugin to the upper layers via <code><a class="el" href="class_context_subscriber_1_1_handle_signal_router.html" title="Routes the valueChanged() and the subscribeFinished() signals to the correct PropertyHandle...">HandleSignalRouter</a></code>. <a href="#c04c071faa737c9b7f029ef0125f6a1c"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#b3f086783e184fa58c5d4c00d5327e78">Provider</a> (const QString &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#620db59b31c197b98ee64369fd46b30e">plugin</a>, const QString &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#7ba9ec4710260ad732a85b6fa8000462">constructionString</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stores the passed plugin name and construction paramater, then moves into the main thread and queues a constructPlugin call. <a href="#b3f086783e184fa58c5d4c00d5327e78"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">Q_INVOKABLE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#b78d5f8ff72bedb037f1f2b15cbda9b9">handleSubscribes</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Executed when the main loop is entered and we have previously scheduled subscriptions / unsubscriptions. <a href="#b78d5f8ff72bedb037f1f2b15cbda9b9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">Q_INVOKABLE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#1e2136dc7c4ad62b020c7ed95914bb67">constructPlugin</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decides which plugin to instantiate based on the <code>plugin</code> passed to the constructor. <a href="#1e2136dc7c4ad62b020c7ed95914bb67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#3046efee2679aa33602deb4f27877eba">signalSubscribeFinished</a> (QString key)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The plugin has finished subscribing to a key, signals this fact to the upper layer. <a href="#3046efee2679aa33602deb4f27877eba"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_context_subscriber_1_1_i_provider_plugin.html">IProviderPlugin</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#620db59b31c197b98ee64369fd46b30e">plugin</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plugin instance communicating with the concrete provider. <a href="#620db59b31c197b98ee64369fd46b30e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b">PluginState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#904cca899aba13b6d356fea73737169e">pluginState</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#37516ac20f11b32af5bde074ccd80a23">pluginName</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#7ba9ec4710260ad732a85b6fa8000462">constructionString</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameter used for initialize the plugin. <a href="#7ba9ec4710260ad732a85b6fa8000462"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QMutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#154fa6041cd471ac46c1038f312ffde6">subscribeLock</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#cbf130166861d576d906fc99da9b2d6d">toSubscribe</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Keys pending for subscription. <a href="#cbf130166861d576d906fc99da9b2d6d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ee2cca89bff8d2bc65039a42cb32563c">toUnsubscribe</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Keys pending for unsubscription. <a href="#ee2cca89bff8d2bc65039a42cb32563c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#6b07417f7e024f8dac5b3b327383dbe9">subscribedKeys</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The keys that should be currently subscribed to. <a href="#6b07417f7e024f8dac5b3b327383dbe9"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Connects to a group of properties via the help of a plugin.
+<p>
+Each instance of this class keeps a plugin dependent communication channel (DBus, shared memory, etc.) open and handles subscriptions, value changes of the properties belonging to the provider on the other end of the channel.<p>
+This class is thread safe, the <code>instance</code>, <code>subscribe</code> and <code>unsubscribe</code> methods can be called from any threads. However this class also guarantees that the signal <code>subscribeFinished</code> and <code>valueChanged</code> will be always emitted from inside the main thread's main loop. <hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="18f291fc00e50055a02525f70e38a52b"></a><!-- doxytag: member="ContextSubscriber::Provider::PluginState" ref="18f291fc00e50055a02525f70e38a52b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b">ContextSubscriber::Provider::PluginState</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="18f291fc00e50055a02525f70e38a52b429fabee9e8f6a76d3903db54c76bd46"></a><!-- doxytag: member="INITIALIZING" ref="18f291fc00e50055a02525f70e38a52b429fabee9e8f6a76d3903db54c76bd46" args="" -->INITIALIZING</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="18f291fc00e50055a02525f70e38a52b142be3c672ac9a6f3fe477b6eeb1acb1"></a><!-- doxytag: member="READY" ref="18f291fc00e50055a02525f70e38a52b142be3c672ac9a6f3fe477b6eeb1acb1" args="" -->READY</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="18f291fc00e50055a02525f70e38a52b6c35b4588f19b72888a9fca0b911642f"></a><!-- doxytag: member="FAILED" ref="18f291fc00e50055a02525f70e38a52b6c35b4588f19b72888a9fca0b911642f" args="" -->FAILED</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="b3f086783e184fa58c5d4c00d5327e78"></a><!-- doxytag: member="ContextSubscriber::Provider::Provider" ref="b3f086783e184fa58c5d4c00d5327e78" args="(const QString &amp;plugin, const QString &amp;constructionString)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ContextSubscriber::Provider::Provider </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>plugin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>constructionString</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Stores the passed plugin name and construction paramater, then moves into the main thread and queues a constructPlugin call.
+<p>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="1e2136dc7c4ad62b020c7ed95914bb67"></a><!-- doxytag: member="ContextSubscriber::Provider::constructPlugin" ref="1e2136dc7c4ad62b020c7ed95914bb67" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::constructPlugin </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decides which plugin to instantiate based on the <code>plugin</code> passed to the constructor.
+<p>
+Always called in the main loop after the constructor is finished. Each plugin library implements a function which can create new instances of that plugin (TODO: come up with the name of the function).
+</div>
+</div><p>
+<a class="anchor" name="b78d5f8ff72bedb037f1f2b15cbda9b9"></a><!-- doxytag: member="ContextSubscriber::Provider::handleSubscribes" ref="b78d5f8ff72bedb037f1f2b15cbda9b9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::handleSubscribes </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Executed when the main loop is entered and we have previously scheduled subscriptions / unsubscriptions.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c49f2c60c5cd741853499bfa9bd4b06d"></a><!-- doxytag: member="ContextSubscriber::Provider::instance" ref="c49f2c60c5cd741853499bfa9bd4b06d" args="(const QString &amp;plugin, const QString &amp;constructionString)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> * ContextSubscriber::Provider::instance </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>plugin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>constructionString</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns a singleton for the named <code>plugin</code> with the <code>constructionString</code>.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="0b9a9637b9bdd8a3989cfccb14c8a24b"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginFailed" ref="0b9a9637b9bdd8a3989cfccb14c8a24b" args="(QString error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginFailed </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>error</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Updates <code>pluginState</code> to <code>FAILED</code> and signals subscribeFinished for keys we are trying to subscribe to.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c87916df512014e5048eda7ae9daf3b9"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginReady" ref="c87916df512014e5048eda7ae9daf3b9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginReady </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Updates <code>pluginState</code> to <code>READY</code> and requests subscription for the keys that should be subscribed.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d18a07fdfb76dfa71f15f4b3e1200793"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginSubscribeFailed" ref="d18a07fdfb76dfa71f15f4b3e1200793" args="(QString failedKey, QString error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginSubscribeFailed </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forwards the call to <code>signalSubscribeFinished</code>, after logging a warning.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cbbadf63086f6b37ff9a9e8e64180032"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginSubscribeFinished" ref="cbbadf63086f6b37ff9a9e8e64180032" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginSubscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forwards the call to <code>signalSubscribeFinished</code>.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c04c071faa737c9b7f029ef0125f6a1c"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginValueChanged" ref="c04c071faa737c9b7f029ef0125f6a1c" args="(QString key, QVariant newValue)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginValueChanged </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QVariant&nbsp;</td>
+ <td class="paramname"> <em>newValue</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forwards the <code>newValue</code> for <code>key</code> received from the plugin to the upper layers via <code><a class="el" href="class_context_subscriber_1_1_handle_signal_router.html" title="Routes the valueChanged() and the subscribeFinished() signals to the correct PropertyHandle...">HandleSignalRouter</a></code>.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3046efee2679aa33602deb4f27877eba"></a><!-- doxytag: member="ContextSubscriber::Provider::signalSubscribeFinished" ref="3046efee2679aa33602deb4f27877eba" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::signalSubscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The plugin has finished subscribing to a key, signals this fact to the upper layer.
+<p>
+The final API for this is the <code>waitForSubscription()</code> method in <code><a class="el" href="class_context_property.html" title="The ContextProperty class allows access to keys and their values.">ContextProperty</a></code>.
+</div>
+</div><p>
+<a class="anchor" name="063cf90bfd10f0bca4ed471f2c3a9c1e"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribe" ref="063cf90bfd10f0bca4ed471f2c3a9c1e" args="(const QString &amp;key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool ContextSubscriber::Provider::subscribe </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Schedules a property to be subscribed to.
+<p>
+Returns true if and only if the main loop has to run for the subscription to be finalized.
+</div>
+</div><p>
+<a class="anchor" name="cdb674013818463a88ce1799885258be"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribeFinished" ref="cdb674013818463a88ce1799885258be" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::subscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [signal]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a6aa042d4a006eb0930d7805139e801f"></a><!-- doxytag: member="ContextSubscriber::Provider::unsubscribe" ref="a6aa042d4a006eb0930d7805139e801f" args="(const QString &amp;key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::unsubscribe </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Schedules a property to be unsubscribed from when the main loop is entered the next time.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b814dacf147a7a59e9d441aebf59f0fd"></a><!-- doxytag: member="ContextSubscriber::Provider::valueChanged" ref="b814dacf147a7a59e9d441aebf59f0fd" args="(QString key, QVariant value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::valueChanged </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QVariant&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [signal]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="7ba9ec4710260ad732a85b6fa8000462"></a><!-- doxytag: member="ContextSubscriber::Provider::constructionString" ref="7ba9ec4710260ad732a85b6fa8000462" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QString <a class="el" href="class_context_subscriber_1_1_provider.html#7ba9ec4710260ad732a85b6fa8000462">ContextSubscriber::Provider::constructionString</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parameter used for initialize the plugin.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="620db59b31c197b98ee64369fd46b30e"></a><!-- doxytag: member="ContextSubscriber::Provider::plugin" ref="620db59b31c197b98ee64369fd46b30e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_i_provider_plugin.html">IProviderPlugin</a>* <a class="el" href="class_context_subscriber_1_1_provider.html#620db59b31c197b98ee64369fd46b30e">ContextSubscriber::Provider::plugin</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Plugin instance communicating with the concrete provider.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="37516ac20f11b32af5bde074ccd80a23"></a><!-- doxytag: member="ContextSubscriber::Provider::pluginName" ref="37516ac20f11b32af5bde074ccd80a23" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QString <a class="el" href="class_context_subscriber_1_1_provider.html#37516ac20f11b32af5bde074ccd80a23">ContextSubscriber::Provider::pluginName</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="904cca899aba13b6d356fea73737169e"></a><!-- doxytag: member="ContextSubscriber::Provider::pluginState" ref="904cca899aba13b6d356fea73737169e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_provider.html#18f291fc00e50055a02525f70e38a52b">PluginState</a> <a class="el" href="class_context_subscriber_1_1_provider.html#904cca899aba13b6d356fea73737169e">ContextSubscriber::Provider::pluginState</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6b07417f7e024f8dac5b3b327383dbe9"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribedKeys" ref="6b07417f7e024f8dac5b3b327383dbe9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#6b07417f7e024f8dac5b3b327383dbe9">ContextSubscriber::Provider::subscribedKeys</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The keys that should be currently subscribed to.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="154fa6041cd471ac46c1038f312ffde6"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribeLock" ref="154fa6041cd471ac46c1038f312ffde6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QMutex <a class="el" href="class_context_subscriber_1_1_provider.html#154fa6041cd471ac46c1038f312ffde6">ContextSubscriber::Provider::subscribeLock</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cbf130166861d576d906fc99da9b2d6d"></a><!-- doxytag: member="ContextSubscriber::Provider::toSubscribe" ref="cbf130166861d576d906fc99da9b2d6d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#cbf130166861d576d906fc99da9b2d6d">ContextSubscriber::Provider::toSubscribe</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Keys pending for subscription.
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ee2cca89bff8d2bc65039a42cb32563c"></a><!-- doxytag: member="ContextSubscriber::Provider::toUnsubscribe" ref="ee2cca89bff8d2bc65039a42cb32563c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#ee2cca89bff8d2bc65039a42cb32563c">ContextSubscriber::Provider::toUnsubscribe</a><code> [private]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Keys pending for unsubscription.
+<p>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="provider_8h-source.html">provider.h</a><li><a class="el" href="mocs_8cpp.html">mocs.cpp</a><li><a class="el" href="provider_8cpp.html">provider.cpp</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Sep 30 11:55:23 2009 for libcontextsubscriber by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>