<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>edelib: EdbusMessage Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">edelib  <span id="projectnumber">2.0.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- Generated by Doxygen 1.7.6.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</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 id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceedelib.html">edelib</a> </li> <li class="navelem"><a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#friends">Friends</a> </div> <div class="headertitle"> <div class="title">EdbusMessage Class Reference<div class="ingroups"><a class="el" href="group__dbus.html">D-Bus classes and functions</a></div></div> </div> </div><!--header--> <div class="contents"> <!-- doxytag: class="edelib::EdbusMessage" --> <p>Data transporter for D-Bus. <a href="classedelib_1_1EdbusMessage.html#details">More...</a></p> <p><code>#include <<a class="el" href="EdbusMessage_8h_source.html">edelib/EdbusMessage.h</a>></code></p> <p><a href="classedelib_1_1EdbusMessage-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classedelib_1_1list.html">list</a>< <a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a> >::<a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classedelib_1_1list.html">list</a>< <a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a> ><br class="typebreak"/> ::<a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a76ba6eb366b2a2184e5d5477731c1159">EdbusMessage</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a43aa00d0db4e821511698b629b329377">EdbusMessage</a> (DBusMessage *msg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a9e23c0f5568b15243af779bcb2eece35">~EdbusMessage</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a46bc270ce05cd1835598633860b4a279">create_signal</a> (const char *<a class="el" href="classedelib_1_1EdbusMessage.html#a1ea0684c4d50bb3529c8776ff1ffda9d">path</a>, const char *<a class="el" href="classedelib_1_1EdbusMessage.html#ae1c82b126aacd2b3582665d5da520261">interface</a>, const char *name)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a5a10a96e2c8163debd6019f6ec1c1ccf">create_method_call</a> (const char *service, const char *<a class="el" href="classedelib_1_1EdbusMessage.html#a1ea0684c4d50bb3529c8776ff1ffda9d">path</a>, const char *<a class="el" href="classedelib_1_1EdbusMessage.html#ae1c82b126aacd2b3582665d5da520261">interface</a>, const char *method)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a5623c9903652d80f64c11f14c217ba3f">create_reply</a> (const <a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> &replying_to)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#af8330ed856b8fd04904c8a679422a02f">create_error_reply</a> (const <a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> &replying_to, const char *errmsg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a176db23a7bf0dccd521b84596e10d1ea">clear_all</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a9b35b9cbab0808e4bf2d8ae25d1825e3">is_signal</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a20067d186a2e733c833b34f12cc1688f">is_method_call</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#ac5529f6b29e268bb654b6b319b9c0659">is_error_reply</a> (const char *errmsg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a1ea0684c4d50bb3529c8776ff1ffda9d">path</a> (const char *np)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a473d8c06e5fa3bee06340b63cc236000">path</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#ae1c82b126aacd2b3582665d5da520261">interface</a> (const char *ni)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a192fe6f9a4462473369eb7da0340c5e1">interface</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a34c527028d3c94fc5483a90774c58fbf">destination</a> (const char *nd)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a4b35ab0df7b7de53efbe7417046c1fe1">destination</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#afdd711ce86d236f3f1230be04cf2483f">member</a> (const char *nm)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a92fb51d21765edbe232a42a511b0c264">member</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a08c89669d89846cdfa27ffd2c8a3499e">sender</a> (const char *ns)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a4c1607ab332b39a2ea20118f3790e50b">sender</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a2da52c8560c02697de72bfde9c00f271">signature</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a58b474bf410a43021488e2855714dd74">append</a> (const <a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a> &data)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a2b63029948b37148ad32c4c6d56193d0">begin</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#ab24dc66b35f5f89fbeb32c3f480eebfe">begin</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#aede6a0071c1deeeb9112ffe69bcf9413">end</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a1fdea499eccff93779dc205242f788f7">end</a> (void) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1EdbusMessage.html#a16fb45e6afbec7eb1b286d26550a25b1">size</a> (void) const </td></tr> <tr><td colspan="2"><h2><a name="friends"></a> Friends</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9adc6d17d54d48a74cdae0024a79e96f"></a><!-- doxytag: member="edelib::EdbusMessage::EdbusConnection" ref="a9adc6d17d54d48a74cdae0024a79e96f" args="" --> class </td><td class="memItemRight" valign="bottom"><b>EdbusConnection</b></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Data transporter for D-Bus. </p> <p><a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> is essentially the way you send and receive a bunch of <a class="el" href="classedelib_1_1EdbusData.html" title="Class for representing D-Bus data types.">EdbusData</a> objects. You can see it as e-mail message: <a class="el" href="classedelib_1_1EdbusData.html" title="Class for representing D-Bus data types.">EdbusData</a> represents a content you wrote or read and <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> is that content plus headers with origin, destination and message type.</p> <p>Knowing that, <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> can be:</p> <ul> <li>signal, created with <a class="el" href="classedelib_1_1EdbusMessage.html#a46bc270ce05cd1835598633860b4a279">create_signal()</a>; it represents D-Bus signal</li> <li>method call, created with <a class="el" href="classedelib_1_1EdbusMessage.html#a5a10a96e2c8163debd6019f6ec1c1ccf">create_method_call()</a>; calls a method on service objects</li> <li>method reply, created with <a class="el" href="classedelib_1_1EdbusMessage.html#a5623c9903652d80f64c11f14c217ba3f">create_reply()</a>; sends a reply on called method</li> <li>error reply, created with <a class="el" href="classedelib_1_1EdbusMessage.html#af8330ed856b8fd04904c8a679422a02f">create_error_reply()</a>; sends a error reply on called method</li> </ul> <p>As you will see from below, signals do not have destination; they are broadcasted over session or system bus and all clients (connected on session or system bus) that do not filter signals will receive it.</p> <p>On other hand, methods (calls and replies) do have destination and they are sent directly to the client. This is the main difference between signals and methods.</p> <p>Creating a specific <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> type you do via one of the <em>create_</em> members. If you call them on already created <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> with some content, that content will be discarded and <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> will become appropriate type.</p> <p>When you create a message, you wants to add some data. This is done via <a class="el" href="classedelib_1_1EdbusMessage.html#a58b474bf410a43021488e2855714dd74">append()</a> member like: </p> <div class="fragment"><pre class="fragment"> <a class="code" href="classedelib_1_1EdbusMessage.html#a76ba6eb366b2a2184e5d5477731c1159">EdbusMessage</a> m; m.create_signal(<span class="stringliteral">"/org/example/SignalObject"</span>, <span class="stringliteral">"org.example.Signal"</span>, <span class="stringliteral">"MySignal"</span>); m.append(<a class="code" href="classedelib_1_1EdbusData.html#a0b0bd4292364951b8c9fc7bbf3292a65">EdbusData::from_int32</a>(34)); m.append(<a class="code" href="classedelib_1_1EdbusData.html#afc1eb899e41062b326db29a0776dcb0e">EdbusData::from_bool</a>(<span class="keyword">true</span>)); m.append(<a class="code" href="classedelib_1_1EdbusData.html#ae38405f20bbcbdc64342fed42784c1b2">EdbusData::from_string</a>(<span class="stringliteral">"some string"</span>)); </pre></div><p><a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> have <a class="el" href="group__dbus.html#gaba4ab1236c759d6344fa81a2926cbf0f">operator<<()</a> that makes adding data much more... sexy ;-)</p> <p>There is above sample via this opeartor: </p> <div class="fragment"><pre class="fragment"> <a class="code" href="classedelib_1_1EdbusMessage.html#a76ba6eb366b2a2184e5d5477731c1159">EdbusMessage</a> m; m.create_signal(<span class="stringliteral">"/org/example/SignalObject"</span>, <span class="stringliteral">"org.example.Signal"</span>, <span class="stringliteral">"MySignal"</span>); m << <a class="code" href="classedelib_1_1EdbusData.html#a0b0bd4292364951b8c9fc7bbf3292a65">EdbusData::from_int32</a>(32) << <a class="code" href="classedelib_1_1EdbusData.html#afc1eb899e41062b326db29a0776dcb0e">EdbusData::from_bool</a>(<span class="keyword">true</span>) << <a class="code" href="classedelib_1_1EdbusData.html#ae38405f20bbcbdc64342fed42784c1b2">EdbusData::from_string</a>(<span class="stringliteral">"some string"</span>); </pre></div><p>Getting data from message is done via iterator. Since iterator do not know what type it points to, you <b>must</b> check it manually before calling appropriate <a class="el" href="classedelib_1_1EdbusData.html" title="Class for representing D-Bus data types.">EdbusData</a> function to fetch concrete data or bad things will happen (assertion will be upon you).</p> <p>Let say you received above message and wants to get a content from it. You will do it like: </p> <div class="fragment"><pre class="fragment"> <a class="code" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">EdbusMessage::const_iterator</a> it = m.<a class="code" href="classedelib_1_1list.html#a2b63029948b37148ad32c4c6d56193d0">begin</a>(), it_end = m.end(); <span class="keywordflow">for</span>(; it != it_end; ++it) { <span class="keywordflow">if</span>((*it).is_int32()) printf(<span class="stringliteral">"Got int with: %i\n"</span>, (*it).to_int32()); <span class="keywordflow">if</span>((*it).is_bool()) printf(<span class="stringliteral">"Got bool with: %i\n"</span>, (*it).to_bool()); <span class="keywordflow">if</span>((*it).is_string()) printf(<span class="stringliteral">"Got string with: %s\n"</span>, (*it).to_string()); } </pre></div><p>Changing (or removing) already present data inside <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> is done via iterator. With this you can e.g. modify received message and send it again. </p> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="a58d246e4071a8387565d4dec4836203e"></a><!-- doxytag: member="edelib::EdbusMessage::const_iterator" ref="a58d246e4071a8387565d4dec4836203e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classedelib_1_1list.html">list</a><<a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a>>::<a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a></td> </tr> </table> </div> <div class="memdoc"> <p>Declare <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> const iterator </p> </div> </div> <a class="anchor" id="aefc4b787f30dc7092433e78844094e6f"></a><!-- doxytag: member="edelib::EdbusMessage::iterator" ref="aefc4b787f30dc7092433e78844094e6f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classedelib_1_1list.html">list</a><<a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a>>::<a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a></td> </tr> </table> </div> <div class="memdoc"> <p>Declare <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> iterator </p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a76ba6eb366b2a2184e5d5477731c1159"></a><!-- doxytag: member="edelib::EdbusMessage::EdbusMessage" ref="a76ba6eb366b2a2184e5d5477731c1159" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create an empty <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> object. Nothing will be allocated until you call one of the <em>create_</em> members. Until that, message is marked as invalid and <a class="el" href="classedelib_1_1EdbusConnection.html" title="D-Bus connection and data sender.">EdbusConnection</a> will refuse to send it </p> </div> </div> <a class="anchor" id="a43aa00d0db4e821511698b629b329377"></a><!-- doxytag: member="edelib::EdbusMessage::EdbusMessage" ref="a43aa00d0db4e821511698b629b329377" args="(DBusMessage *msg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> </td> <td>(</td> <td class="paramtype">DBusMessage * </td> <td class="paramname"><em>msg</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create an <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> from DBusMessage. This is used to simplify internals and you should not use it directly </p> </div> </div> <a class="anchor" id="a9e23c0f5568b15243af779bcb2eece35"></a><!-- doxytag: member="edelib::EdbusMessage::~EdbusMessage" ref="a9e23c0f5568b15243af779bcb2eece35" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">~<a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Clears internal data </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a58b474bf410a43021488e2855714dd74"></a><!-- doxytag: member="edelib::EdbusMessage::append" ref="a58b474bf410a43021488e2855714dd74" args="(const EdbusData &data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a58b474bf410a43021488e2855714dd74">append</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classedelib_1_1EdbusData.html">EdbusData</a> & </td> <td class="paramname"><em>data</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Append <a class="el" href="classedelib_1_1EdbusData.html" title="Class for representing D-Bus data types.">EdbusData</a> object in message </p> <p>Referenced by <a class="el" href="group__dbus.html#ga2154eec2c883cf727aa83620e44cb452">edelib::operator<<()</a>.</p> </div> </div> <a class="anchor" id="a2b63029948b37148ad32c4c6d56193d0"></a><!-- doxytag: member="edelib::EdbusMessage::begin" ref="a2b63029948b37148ad32c4c6d56193d0" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#a2b63029948b37148ad32c4c6d56193d0">begin</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns iterator at the message start. It points to the first element </p> </div> </div> <a class="anchor" id="ab24dc66b35f5f89fbeb32c3f480eebfe"></a><!-- doxytag: member="edelib::EdbusMessage::begin" ref="ab24dc66b35f5f89fbeb32c3f480eebfe" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#a2b63029948b37148ad32c4c6d56193d0">begin</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns const iterator at the message start. It points to the first element </p> </div> </div> <a class="anchor" id="a176db23a7bf0dccd521b84596e10d1ea"></a><!-- doxytag: member="edelib::EdbusMessage::clear_all" ref="a176db23a7bf0dccd521b84596e10d1ea" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a176db23a7bf0dccd521b84596e10d1ea">clear_all</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Clears all <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> data (including message headers with destination, type and etc.) and marks it as invalid. If you want to send this object again, make sure to re-create it again with one of <em>create_</em> members.</p> <p>This is since DBus internally queues messages after they are sent (if there is need to re-send them again) there is no way to clear message content without destroying headers </p> </div> </div> <a class="anchor" id="af8330ed856b8fd04904c8a679422a02f"></a><!-- doxytag: member="edelib::EdbusMessage::create_error_reply" ref="af8330ed856b8fd04904c8a679422a02f" args="(const EdbusMessage &replying_to, const char *errmsg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#af8330ed856b8fd04904c8a679422a02f">create_error_reply</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> & </td> <td class="paramname"><em>replying_to</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>errmsg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create error reply</p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">replying_to</td><td>is a message to be replyed </td></tr> <tr><td class="paramname">errmsg</td><td>is error string to be sent </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a5a10a96e2c8163debd6019f6ec1c1ccf"></a><!-- doxytag: member="edelib::EdbusMessage::create_method_call" ref="a5a10a96e2c8163debd6019f6ec1c1ccf" args="(const char *service, const char *path, const char *interface, const char *method)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a5a10a96e2c8163debd6019f6ec1c1ccf">create_method_call</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>service</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>interface</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>method</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a method call</p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">service</td><td>is destination service name </td></tr> <tr><td class="paramname">path</td><td>is destination object path </td></tr> <tr><td class="paramname">interface</td><td>is destination interface name </td></tr> <tr><td class="paramname">method</td><td>is method to be called </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a5623c9903652d80f64c11f14c217ba3f"></a><!-- doxytag: member="edelib::EdbusMessage::create_reply" ref="a5623c9903652d80f64c11f14c217ba3f" args="(const EdbusMessage &replying_to)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a5623c9903652d80f64c11f14c217ba3f">create_reply</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classedelib_1_1EdbusMessage.html">EdbusMessage</a> & </td> <td class="paramname"><em>replying_to</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a reply for method</p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">replying_to</td><td>is a message to be replyed </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a46bc270ce05cd1835598633860b4a279"></a><!-- doxytag: member="edelib::EdbusMessage::create_signal" ref="a46bc270ce05cd1835598633860b4a279" args="(const char *path, const char *interface, const char *name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a46bc270ce05cd1835598633860b4a279">create_signal</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>interface</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>name</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a signal message</p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>is destination object path </td></tr> <tr><td class="paramname">interface</td><td>is destination interface name </td></tr> <tr><td class="paramname">name</td><td>is signal name </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a34c527028d3c94fc5483a90774c58fbf"></a><!-- doxytag: member="edelib::EdbusMessage::destination" ref="a34c527028d3c94fc5483a90774c58fbf" args="(const char *nd)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a34c527028d3c94fc5483a90774c58fbf">destination</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>nd</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the message's destination.</p> <p>The destination is the name of another connection on the bus and may be either the unique name assigned by the bus to each connection, or a well-known name specified in advance</p> <p>It will do nothing if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a4b35ab0df7b7de53efbe7417046c1fe1"></a><!-- doxytag: member="edelib::EdbusMessage::destination" ref="a4b35ab0df7b7de53efbe7417046c1fe1" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#a34c527028d3c94fc5483a90774c58fbf">destination</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get a message destination It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="aede6a0071c1deeeb9112ffe69bcf9413"></a><!-- doxytag: member="edelib::EdbusMessage::end" ref="aede6a0071c1deeeb9112ffe69bcf9413" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html#aefc4b787f30dc7092433e78844094e6f">iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#aede6a0071c1deeeb9112ffe69bcf9413">end</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns iterator at the message end. It <b>does not</b> points to the last element, but element after the last, and you must not dereferce it </p> </div> </div> <a class="anchor" id="a1fdea499eccff93779dc205242f788f7"></a><!-- doxytag: member="edelib::EdbusMessage::end" ref="a1fdea499eccff93779dc205242f788f7" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1EdbusMessage.html#a58d246e4071a8387565d4dec4836203e">const_iterator</a> <a class="el" href="classedelib_1_1EdbusMessage.html#aede6a0071c1deeeb9112ffe69bcf9413">end</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns const iterator at the message end. It <b>does not</b> points to the last element, but element after the last, and you must not dereferce it </p> </div> </div> <a class="anchor" id="ae1c82b126aacd2b3582665d5da520261"></a><!-- doxytag: member="edelib::EdbusMessage::interface" ref="ae1c82b126aacd2b3582665d5da520261" args="(const char *ni)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#ae1c82b126aacd2b3582665d5da520261">interface</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>ni</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set interface name for destination. It will do nothing if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a192fe6f9a4462473369eb7da0340c5e1"></a><!-- doxytag: member="edelib::EdbusMessage::interface" ref="a192fe6f9a4462473369eb7da0340c5e1" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#ae1c82b126aacd2b3582665d5da520261">interface</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get interface name for destination It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="ac5529f6b29e268bb654b6b319b9c0659"></a><!-- doxytag: member="edelib::EdbusMessage::is_error_reply" ref="ac5529f6b29e268bb654b6b319b9c0659" args="(const char *errmsg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classedelib_1_1EdbusMessage.html#ac5529f6b29e268bb654b6b319b9c0659">is_error_reply</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>errmsg</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns true if current message is error reply type </p> </div> </div> <a class="anchor" id="a20067d186a2e733c833b34f12cc1688f"></a><!-- doxytag: member="edelib::EdbusMessage::is_method_call" ref="a20067d186a2e733c833b34f12cc1688f" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classedelib_1_1EdbusMessage.html#a20067d186a2e733c833b34f12cc1688f">is_method_call</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns true if current message is method call type </p> </div> </div> <a class="anchor" id="a9b35b9cbab0808e4bf2d8ae25d1825e3"></a><!-- doxytag: member="edelib::EdbusMessage::is_signal" ref="a9b35b9cbab0808e4bf2d8ae25d1825e3" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classedelib_1_1EdbusMessage.html#a9b35b9cbab0808e4bf2d8ae25d1825e3">is_signal</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns true if current message is signal type </p> </div> </div> <a class="anchor" id="afdd711ce86d236f3f1230be04cf2483f"></a><!-- doxytag: member="edelib::EdbusMessage::member" ref="afdd711ce86d236f3f1230be04cf2483f" args="(const char *nm)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#afdd711ce86d236f3f1230be04cf2483f">member</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>nm</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set method name to be called. </p> <dl class="note"><dt><b>Note:</b></dt><dd>This function can be used to set signal name too</dd></dl> <p>It will do nothing if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a92fb51d21765edbe232a42a511b0c264"></a><!-- doxytag: member="edelib::EdbusMessage::member" ref="a92fb51d21765edbe232a42a511b0c264" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#afdd711ce86d236f3f1230be04cf2483f">member</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get method or signal name from message It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a1ea0684c4d50bb3529c8776ff1ffda9d"></a><!-- doxytag: member="edelib::EdbusMessage::path" ref="a1ea0684c4d50bb3529c8776ff1ffda9d" args="(const char *np)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a1ea0684c4d50bb3529c8776ff1ffda9d">path</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>np</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set object path for destination It will do nothing if one of the <em>create_</em> members are called before </p> </div> </div> <a class="anchor" id="a473d8c06e5fa3bee06340b63cc236000"></a><!-- doxytag: member="edelib::EdbusMessage::path" ref="a473d8c06e5fa3bee06340b63cc236000" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#a1ea0684c4d50bb3529c8776ff1ffda9d">path</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get object path for destination It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a08c89669d89846cdfa27ffd2c8a3499e"></a><!-- doxytag: member="edelib::EdbusMessage::sender" ref="a08c89669d89846cdfa27ffd2c8a3499e" args="(const char *ns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1EdbusMessage.html#a08c89669d89846cdfa27ffd2c8a3499e">sender</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>ns</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the message sender.</p> <p>The sender must be a valid bus name as defined in the D-Bus specification</p> <p>It will do nothing if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a4c1607ab332b39a2ea20118f3790e50b"></a><!-- doxytag: member="edelib::EdbusMessage::sender" ref="a4c1607ab332b39a2ea20118f3790e50b" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#a08c89669d89846cdfa27ffd2c8a3499e">sender</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Gets the unique name of the connection which originated this message, or NULL if unknown or inapplicable.</p> <p>The sender is filled in by the message bus.</p> <p>It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a2da52c8560c02697de72bfde9c00f271"></a><!-- doxytag: member="edelib::EdbusMessage::signature" ref="a2da52c8560c02697de72bfde9c00f271" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="classedelib_1_1EdbusMessage.html#a2da52c8560c02697de72bfde9c00f271">signature</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the signature of this message. You will not need this unless you know what returned value means.</p> <p>A signature will contain only reasonable content when you receive message via one of the callbacks set inside <a class="el" href="classedelib_1_1EdbusConnection.html" title="D-Bus connection and data sender.">EdbusConnection</a>.</p> <p>It will return NULL if one of the <em>create_</em> members are not called before </p> </div> </div> <a class="anchor" id="a16fb45e6afbec7eb1b286d26550a25b1"></a><!-- doxytag: member="edelib::EdbusMessage::size" ref="a16fb45e6afbec7eb1b286d26550a25b1" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="classedelib_1_1EdbusMessage.html#a16fb45e6afbec7eb1b286d26550a25b1">size</a> </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the size of <a class="el" href="classedelib_1_1EdbusMessage.html" title="Data transporter for D-Bus.">EdbusMessage</a> content </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>edelib/<a class="el" href="EdbusMessage_8h_source.html">EdbusMessage.h</a></li> </ul> </div><!-- contents --> <hr class="footer"/><address class="footer"><small> Generated on Tue Jun 5 2012 17:49:02 for edelib by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.7.6.1 </small></address> </body> </html>