KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/21573/root/usr/share/devhelp/books/dbus/api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/21573/root/usr/share/devhelp/books/dbus/api/dbus-watch_8c-source.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>D-Bus: dbus-watch.c Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul></div>
<h1>dbus-watch.c</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */</span>
<a name="l00002"></a>00002 <span class="comment">/* dbus-watch.c DBusWatch implementation</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2002, 2003  Red Hat Inc.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * Licensed under the Academic Free License version 2.1</span>
<a name="l00007"></a>00007 <span class="comment"> * </span>
<a name="l00008"></a>00008 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span>
<a name="l00009"></a>00009 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00010"></a>00010 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00011"></a>00011 <span class="comment"> * (at your option) any later version.</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
<a name="l00014"></a>00014 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00015"></a>00015 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00016"></a>00016 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00017"></a>00017 <span class="comment"> * </span>
<a name="l00018"></a>00018 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
<a name="l00019"></a>00019 <span class="comment"> * along with this program; if not, write to the Free Software</span>
<a name="l00020"></a>00020 <span class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> */</span>
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 <span class="preprocessor">#include "dbus-internals.h"</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "dbus-watch.h"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "dbus-list.h"</span>
<a name="l00027"></a>00027 
<a name="l00039"></a><a class="code" href="structDBusWatch.html">00039</a> <span class="keyword">struct </span><a class="code" href="structDBusWatch.html">DBusWatch</a>
<a name="l00040"></a>00040 {
<a name="l00041"></a><a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">00041</a>   <span class="keywordtype">int</span> <a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a>;                        
<a name="l00042"></a><a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">00042</a>   <span class="keywordtype">int</span> <a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a>;                              
<a name="l00043"></a><a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">00043</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a>;                  
<a name="l00045"></a><a class="code" href="structDBusWatch.html#ad3fb97da0ad7e5897611930f7a1c3e9">00045</a>   <a class="code" href="group__DBusWatchInternals.html#gcc4276cd0b01ed7c011658f164ce575a">DBusWatchHandler</a> <a class="code" href="structDBusWatch.html#ad3fb97da0ad7e5897611930f7a1c3e9">handler</a>;                    
<a name="l00046"></a><a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">00046</a>   <span class="keywordtype">void</span> *<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a>;                          
<a name="l00047"></a><a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">00047</a>   <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a> <a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a>; 
<a name="l00049"></a><a class="code" href="structDBusWatch.html#71877a39d8c2a7d533c0c6f280648d53">00049</a>   <span class="keywordtype">void</span> *<a class="code" href="structDBusWatch.html#71877a39d8c2a7d533c0c6f280648d53">data</a>;                          
<a name="l00050"></a><a class="code" href="structDBusWatch.html#d848cbd636518fd346039d0d771ba021">00050</a>   <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a> <a class="code" href="structDBusWatch.html#d848cbd636518fd346039d0d771ba021">free_data_function</a>; 
<a name="l00051"></a><a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">00051</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">enabled</a> : 1;            
<a name="l00052"></a>00052 };
<a name="l00053"></a>00053 
<a name="l00066"></a>00066 <a class="code" href="structDBusWatch.html">DBusWatch</a>*
<a name="l00067"></a><a class="code" href="group__DBusWatchInternals.html#g1f940e505b20e6429ae858a7b70b0541">00067</a> <a class="code" href="group__DBusWatchInternals.html#g1f940e505b20e6429ae858a7b70b0541">_dbus_watch_new</a> (<span class="keywordtype">int</span>               fd,
<a name="l00068"></a>00068                  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>      flags,
<a name="l00069"></a>00069                  <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>       enabled,
<a name="l00070"></a>00070                  <a class="code" href="group__DBusWatchInternals.html#gcc4276cd0b01ed7c011658f164ce575a">DBusWatchHandler</a>  handler,
<a name="l00071"></a>00071                  <span class="keywordtype">void</span>             *data,
<a name="l00072"></a>00072                  <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a>  free_data_function)
<a name="l00073"></a>00073 {
<a name="l00074"></a>00074   <a class="code" href="structDBusWatch.html">DBusWatch</a> *watch;
<a name="l00075"></a>00075 
<a name="l00076"></a>00076 <span class="preprocessor">#define VALID_WATCH_FLAGS (DBUS_WATCH_WRITABLE | DBUS_WATCH_READABLE)</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span>  
<a name="l00078"></a>00078   <a class="code" href="group__DBusInternalsUtils.html#g129c6c03f011cdc171934d5d386cc797">_dbus_assert</a> ((flags &amp; VALID_WATCH_FLAGS) == flags);
<a name="l00079"></a>00079   
<a name="l00080"></a>00080   watch = <a class="code" href="group__DBusMemory.html#gba9d823abda7f4cadbaf5177d3b8b793">dbus_new0</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a>, 1);
<a name="l00081"></a>00081   <span class="keywordflow">if</span> (watch == <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00082"></a>00082     <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;
<a name="l00083"></a>00083   
<a name="l00084"></a>00084   watch-&gt;<a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a> = 1;
<a name="l00085"></a>00085   watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a> = fd;
<a name="l00086"></a>00086   watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> = flags;
<a name="l00087"></a>00087   watch-&gt;<a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">enabled</a> = enabled;
<a name="l00088"></a>00088 
<a name="l00089"></a>00089   watch-&gt;<a class="code" href="structDBusWatch.html#ad3fb97da0ad7e5897611930f7a1c3e9">handler</a> = handler;
<a name="l00090"></a>00090   watch-&gt;<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a> = data;
<a name="l00091"></a>00091   watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a> = free_data_function;
<a name="l00092"></a>00092   
<a name="l00093"></a>00093   <span class="keywordflow">return</span> watch;
<a name="l00094"></a>00094 }
<a name="l00095"></a>00095 
<a name="l00102"></a>00102 <a class="code" href="structDBusWatch.html">DBusWatch</a> *
<a name="l00103"></a><a class="code" href="group__DBusWatchInternals.html#g0db8530cc53589589d67dfb35d03db61">00103</a> <a class="code" href="group__DBusWatchInternals.html#g0db8530cc53589589d67dfb35d03db61">_dbus_watch_ref</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105   watch-&gt;<a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a> += 1;
<a name="l00106"></a>00106 
<a name="l00107"></a>00107   <span class="keywordflow">return</span> watch;
<a name="l00108"></a>00108 }
<a name="l00109"></a>00109 
<a name="l00116"></a>00116 <span class="keywordtype">void</span>
<a name="l00117"></a><a class="code" href="group__DBusWatchInternals.html#g7d27dfc13a3ccfbaa99ceab331bb46f0">00117</a> <a class="code" href="group__DBusWatchInternals.html#g7d27dfc13a3ccfbaa99ceab331bb46f0">_dbus_watch_unref</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00118"></a>00118 {
<a name="l00119"></a>00119   <a class="code" href="group__DBusInternalsUtils.html#g129c6c03f011cdc171934d5d386cc797">_dbus_assert</a> (watch != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);
<a name="l00120"></a>00120   <a class="code" href="group__DBusInternalsUtils.html#g129c6c03f011cdc171934d5d386cc797">_dbus_assert</a> (watch-&gt;<a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a> &gt; 0);
<a name="l00121"></a>00121 
<a name="l00122"></a>00122   watch-&gt;<a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a> -= 1;
<a name="l00123"></a>00123   <span class="keywordflow">if</span> (watch-&gt;<a class="code" href="structDBusWatch.html#3984cbcb64ed76d2f0c1182c386f7978">refcount</a> == 0)
<a name="l00124"></a>00124     {
<a name="l00125"></a>00125       <a class="code" href="group__DBusWatch.html#g5c75a65cf0680956cc0188d86a05cfae">dbus_watch_set_data</a> (watch, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>); <span class="comment">/* call free_data_function */</span>
<a name="l00126"></a>00126 
<a name="l00127"></a>00127       <span class="keywordflow">if</span> (watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a>)
<a name="l00128"></a>00128         (* watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a>) (watch-&gt;<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a>);
<a name="l00129"></a>00129       
<a name="l00130"></a>00130       <a class="code" href="group__DBusMemory.html#g488c6b08cc8c1ddf0203243c4b27a13c">dbus_free</a> (watch);
<a name="l00131"></a>00131     }
<a name="l00132"></a>00132 }
<a name="l00133"></a>00133 
<a name="l00144"></a>00144 <span class="keywordtype">void</span>
<a name="l00145"></a><a class="code" href="group__DBusWatchInternals.html#gd8521d64123c1d1ae9a094bac8addd31">00145</a> <a class="code" href="group__DBusWatchInternals.html#gd8521d64123c1d1ae9a094bac8addd31">_dbus_watch_invalidate</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00146"></a>00146 {
<a name="l00147"></a>00147   watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a> = -1;
<a name="l00148"></a>00148   watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> = 0;
<a name="l00149"></a>00149 }
<a name="l00150"></a>00150 
<a name="l00160"></a>00160 <span class="keywordtype">void</span>
<a name="l00161"></a><a class="code" href="group__DBusWatchInternals.html#gb8f49926fe9ee56cb4ae7c1c8071cca3">00161</a> <a class="code" href="group__DBusWatchInternals.html#gb8f49926fe9ee56cb4ae7c1c8071cca3">_dbus_watch_sanitize_condition</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a>    *watch,
<a name="l00162"></a>00162                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *condition)
<a name="l00163"></a>00163 {
<a name="l00164"></a>00164   <span class="keywordflow">if</span> (!(watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> &amp; <a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b98178bd7a88e9bfbb8505db76eb7e0ccc4">DBUS_WATCH_READABLE</a>))
<a name="l00165"></a>00165     *condition &amp;= ~<a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b98178bd7a88e9bfbb8505db76eb7e0ccc4">DBUS_WATCH_READABLE</a>;
<a name="l00166"></a>00166   <span class="keywordflow">if</span> (!(watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> &amp; <a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b9862ddca29b06bfbbc08bb7f3dfd3d307f">DBUS_WATCH_WRITABLE</a>))
<a name="l00167"></a>00167     *condition &amp;= ~<a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b9862ddca29b06bfbbc08bb7f3dfd3d307f">DBUS_WATCH_WRITABLE</a>;
<a name="l00168"></a>00168 }
<a name="l00169"></a>00169 
<a name="l00170"></a>00170 
<a name="l00190"></a><a class="code" href="structDBusWatchList.html">00190</a> <span class="keyword">struct </span><a class="code" href="structDBusWatchList.html">DBusWatchList</a>
<a name="l00191"></a>00191 {
<a name="l00192"></a><a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">00192</a>   <a class="code" href="structDBusList.html">DBusList</a> *<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>;           
<a name="l00194"></a><a class="code" href="structDBusWatchList.html#e515ab01e8d08e6b252e468be7dc7074">00194</a>   <a class="code" href="group__DBusConnection.html#g985b712fc165afa66e5901859b68b9de">DBusAddWatchFunction</a> <a class="code" href="structDBusWatchList.html#e515ab01e8d08e6b252e468be7dc7074">add_watch_function</a>;    
<a name="l00195"></a><a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">00195</a>   <a class="code" href="group__DBusConnection.html#g6a48c42c4bde24911cae7fda0d1f1589">DBusRemoveWatchFunction</a> <a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a>; 
<a name="l00196"></a><a class="code" href="structDBusWatchList.html#ed21ba690eb810c4c2da581feaed822a">00196</a>   <a class="code" href="group__DBusConnection.html#gfa7e0f7856f8ebbe66475979ef54ed9e">DBusWatchToggledFunction</a> <a class="code" href="structDBusWatchList.html#ed21ba690eb810c4c2da581feaed822a">watch_toggled_function</a>; 
<a name="l00197"></a><a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">00197</a>   <span class="keywordtype">void</span> *<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>;                           
<a name="l00198"></a><a class="code" href="structDBusWatchList.html#2308b08f7f4cb858fbcca718f2bef735">00198</a>   <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a> <a class="code" href="structDBusWatchList.html#2308b08f7f4cb858fbcca718f2bef735">watch_free_data_function</a>;  
<a name="l00199"></a>00199 };
<a name="l00200"></a>00200 
<a name="l00207"></a>00207 <a class="code" href="structDBusWatchList.html">DBusWatchList</a>*
<a name="l00208"></a><a class="code" href="group__DBusWatchInternals.html#g5d9db5d0af5916a5ec890eb38d5741eb">00208</a> <a class="code" href="group__DBusWatchInternals.html#g5d9db5d0af5916a5ec890eb38d5741eb">_dbus_watch_list_new</a> (<span class="keywordtype">void</span>)
<a name="l00209"></a>00209 {
<a name="l00210"></a>00210   <a class="code" href="structDBusWatchList.html">DBusWatchList</a> *watch_list;
<a name="l00211"></a>00211 
<a name="l00212"></a>00212   watch_list = <a class="code" href="group__DBusMemory.html#gba9d823abda7f4cadbaf5177d3b8b793">dbus_new0</a> (<a class="code" href="structDBusWatchList.html">DBusWatchList</a>, 1);
<a name="l00213"></a>00213   <span class="keywordflow">if</span> (watch_list == <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00214"></a>00214     <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;
<a name="l00215"></a>00215 
<a name="l00216"></a>00216   <span class="keywordflow">return</span> watch_list;
<a name="l00217"></a>00217 }
<a name="l00218"></a>00218 
<a name="l00224"></a>00224 <span class="keywordtype">void</span>
<a name="l00225"></a><a class="code" href="group__DBusWatchInternals.html#gc3f75c0da2c8c51e8708f45dd27f9e2d">00225</a> <a class="code" href="group__DBusWatchInternals.html#gc3f75c0da2c8c51e8708f45dd27f9e2d">_dbus_watch_list_free</a> (<a class="code" href="structDBusWatchList.html">DBusWatchList</a> *watch_list)
<a name="l00226"></a>00226 {
<a name="l00227"></a>00227   <span class="comment">/* free watch_data and removes watches as a side effect */</span>
<a name="l00228"></a>00228   <a class="code" href="group__DBusWatchInternals.html#ge9ab8cf14f4191191e94183be9a031d9">_dbus_watch_list_set_functions</a> (watch_list,
<a name="l00229"></a>00229                                   <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);
<a name="l00230"></a>00230   <a class="code" href="group__DBusList.html#g8dd69084b53361803a765e6d53d5b9d1">_dbus_list_foreach</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>,
<a name="l00231"></a>00231                       (<a class="code" href="group__DBusInternalsUtils.html#gadf9d45082dd1c9f59d8420d13492669">DBusForeachFunction</a>) <a class="code" href="group__DBusWatchInternals.html#g7d27dfc13a3ccfbaa99ceab331bb46f0">_dbus_watch_unref</a>,
<a name="l00232"></a>00232                       <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);
<a name="l00233"></a>00233   <a class="code" href="group__DBusList.html#ga36d13444a050a923941c53650b72f9d">_dbus_list_clear</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>);
<a name="l00234"></a>00234 
<a name="l00235"></a>00235   <a class="code" href="group__DBusMemory.html#g488c6b08cc8c1ddf0203243c4b27a13c">dbus_free</a> (watch_list);
<a name="l00236"></a>00236 }
<a name="l00237"></a>00237 
<a name="l00252"></a>00252 <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>
<a name="l00253"></a><a class="code" href="group__DBusWatchInternals.html#ge9ab8cf14f4191191e94183be9a031d9">00253</a> <a class="code" href="group__DBusWatchInternals.html#ge9ab8cf14f4191191e94183be9a031d9">_dbus_watch_list_set_functions</a> (<a class="code" href="structDBusWatchList.html">DBusWatchList</a>           *watch_list,
<a name="l00254"></a>00254                                 <a class="code" href="group__DBusConnection.html#g985b712fc165afa66e5901859b68b9de">DBusAddWatchFunction</a>     add_function,
<a name="l00255"></a>00255                                 <a class="code" href="group__DBusConnection.html#g6a48c42c4bde24911cae7fda0d1f1589">DBusRemoveWatchFunction</a>  remove_function,
<a name="l00256"></a>00256                                 <a class="code" href="group__DBusConnection.html#gfa7e0f7856f8ebbe66475979ef54ed9e">DBusWatchToggledFunction</a> toggled_function,
<a name="l00257"></a>00257                                 <span class="keywordtype">void</span>                    *data,
<a name="l00258"></a>00258                                 <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a>         free_data_function)
<a name="l00259"></a>00259 {
<a name="l00260"></a>00260   <span class="comment">/* Add watches with the new watch function, failing on OOM */</span>
<a name="l00261"></a>00261   <span class="keywordflow">if</span> (add_function != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00262"></a>00262     {
<a name="l00263"></a>00263       <a class="code" href="structDBusList.html">DBusList</a> *link;
<a name="l00264"></a>00264       
<a name="l00265"></a>00265       link = <a class="code" href="group__DBusList.html#g1e26ce4fb4acb50593bd5ed2f4eeb3ae">_dbus_list_get_first_link</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>);
<a name="l00266"></a>00266       <span class="keywordflow">while</span> (link != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00267"></a>00267         {
<a name="l00268"></a>00268           <a class="code" href="structDBusList.html">DBusList</a> *next = <a class="code" href="group__DBusList.html#gede4ace46d5ee497d75074bfec4490a2">_dbus_list_get_next_link</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>,
<a name="l00269"></a>00269                                                      link);
<a name="l00270"></a>00270 
<a name="l00271"></a>00271 <span class="preprocessor">#ifdef DBUS_ENABLE_VERBOSE_MODE</span>
<a name="l00272"></a>00272 <span class="preprocessor"></span>          {
<a name="l00273"></a>00273             <span class="keyword">const</span> <span class="keywordtype">char</span> *watch_type;
<a name="l00274"></a>00274             <span class="keywordtype">int</span> flags;
<a name="l00275"></a>00275 
<a name="l00276"></a>00276             flags = <a class="code" href="group__DBusWatch.html#gf172a2b1d1f82333e67cec8d99c9204a">dbus_watch_get_flags</a> (link-&gt;<a class="code" href="structDBusList.html#29ab457bcf9092252bb0c4282c727055">data</a>);
<a name="l00277"></a>00277             <span class="keywordflow">if</span> ((flags &amp; <a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b98178bd7a88e9bfbb8505db76eb7e0ccc4">DBUS_WATCH_READABLE</a>) &amp;&amp;
<a name="l00278"></a>00278                 (flags &amp; <a class="code" href="group__DBusConnection.html#gg0556779e61aeb19eb9cf6b6466bd1b9862ddca29b06bfbbc08bb7f3dfd3d307f">DBUS_WATCH_WRITABLE</a>))
<a name="l00279"></a>00279               watch_type = <span class="stringliteral">"readwrite"</span>;
<a name="l00280"></a>00280             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; DBUS_WATCH_READABLE)
<a name="l00281"></a>00281               watch_type = <span class="stringliteral">"read"</span>;
<a name="l00282"></a>00282             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; DBUS_WATCH_WRITABLE)
<a name="l00283"></a>00283               watch_type = <span class="stringliteral">"write"</span>;
<a name="l00284"></a>00284             <span class="keywordflow">else</span>
<a name="l00285"></a>00285               watch_type = <span class="stringliteral">"not read or write"</span>;
<a name="l00286"></a>00286             
<a name="l00287"></a>00287             _dbus_verbose (<span class="stringliteral">"Adding a %s watch on fd %d using newly-set add watch function\n"</span>,
<a name="l00288"></a>00288                            watch_type,
<a name="l00289"></a>00289                            <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (link-&gt;<a class="code" href="structDBusList.html#29ab457bcf9092252bb0c4282c727055">data</a>));
<a name="l00290"></a>00290           }
<a name="l00291"></a>00291 <span class="preprocessor">#endif </span><span class="comment">/* DBUS_ENABLE_VERBOSE_MODE */</span>
<a name="l00292"></a>00292           
<a name="l00293"></a>00293           <span class="keywordflow">if</span> (!(* add_function) (link-&gt;<a class="code" href="structDBusList.html#29ab457bcf9092252bb0c4282c727055">data</a>, data))
<a name="l00294"></a>00294             {
<a name="l00295"></a>00295               <span class="comment">/* remove it all again and return FALSE */</span>
<a name="l00296"></a>00296               <a class="code" href="structDBusList.html">DBusList</a> *link2;
<a name="l00297"></a>00297               
<a name="l00298"></a>00298               link2 = <a class="code" href="group__DBusList.html#g1e26ce4fb4acb50593bd5ed2f4eeb3ae">_dbus_list_get_first_link</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>);
<a name="l00299"></a>00299               <span class="keywordflow">while</span> (link2 != link)
<a name="l00300"></a>00300                 {
<a name="l00301"></a>00301                   <a class="code" href="structDBusList.html">DBusList</a> *next = <a class="code" href="group__DBusList.html#gede4ace46d5ee497d75074bfec4490a2">_dbus_list_get_next_link</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>,
<a name="l00302"></a>00302                                                              link2);
<a name="l00303"></a>00303                   
<a name="l00304"></a>00304                   _dbus_verbose (<span class="stringliteral">"Removing watch on fd %d using newly-set remove function because initial add failed\n"</span>,
<a name="l00305"></a>00305                                  <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (link2-&gt;<a class="code" href="structDBusList.html#29ab457bcf9092252bb0c4282c727055">data</a>));
<a name="l00306"></a>00306                   
<a name="l00307"></a>00307                   (* remove_function) (link2-&gt;<a class="code" href="structDBusList.html#29ab457bcf9092252bb0c4282c727055">data</a>, data);
<a name="l00308"></a>00308                   
<a name="l00309"></a>00309                   link2 = next;
<a name="l00310"></a>00310                 }
<a name="l00311"></a>00311 
<a name="l00312"></a>00312               <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>;
<a name="l00313"></a>00313             }
<a name="l00314"></a>00314       
<a name="l00315"></a>00315           link = next;
<a name="l00316"></a>00316         }
<a name="l00317"></a>00317     }
<a name="l00318"></a>00318   
<a name="l00319"></a>00319   <span class="comment">/* Remove all current watches from previous watch handlers */</span>
<a name="l00320"></a>00320 
<a name="l00321"></a>00321   <span class="keywordflow">if</span> (watch_list-&gt;<a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a> != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00322"></a>00322     {
<a name="l00323"></a>00323       _dbus_verbose (<span class="stringliteral">"Removing all pre-existing watches\n"</span>);
<a name="l00324"></a>00324       
<a name="l00325"></a>00325       <a class="code" href="group__DBusList.html#g8dd69084b53361803a765e6d53d5b9d1">_dbus_list_foreach</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>,
<a name="l00326"></a>00326                           (<a class="code" href="group__DBusInternalsUtils.html#gadf9d45082dd1c9f59d8420d13492669">DBusForeachFunction</a>) watch_list-&gt;<a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a>,
<a name="l00327"></a>00327                           watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>);
<a name="l00328"></a>00328     }
<a name="l00329"></a>00329 
<a name="l00330"></a>00330   <span class="keywordflow">if</span> (watch_list-&gt;<a class="code" href="structDBusWatchList.html#2308b08f7f4cb858fbcca718f2bef735">watch_free_data_function</a> != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00331"></a>00331     (* watch_list-&gt;<a class="code" href="structDBusWatchList.html#2308b08f7f4cb858fbcca718f2bef735">watch_free_data_function</a>) (watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>);
<a name="l00332"></a>00332   
<a name="l00333"></a>00333   watch_list-&gt;<a class="code" href="structDBusWatchList.html#e515ab01e8d08e6b252e468be7dc7074">add_watch_function</a> = add_function;
<a name="l00334"></a>00334   watch_list-&gt;<a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a> = remove_function;
<a name="l00335"></a>00335   watch_list-&gt;<a class="code" href="structDBusWatchList.html#ed21ba690eb810c4c2da581feaed822a">watch_toggled_function</a> = toggled_function;
<a name="l00336"></a>00336   watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a> = data;
<a name="l00337"></a>00337   watch_list-&gt;<a class="code" href="structDBusWatchList.html#2308b08f7f4cb858fbcca718f2bef735">watch_free_data_function</a> = free_data_function;
<a name="l00338"></a>00338 
<a name="l00339"></a>00339   <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;
<a name="l00340"></a>00340 }
<a name="l00341"></a>00341 
<a name="l00350"></a>00350 <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>
<a name="l00351"></a><a class="code" href="group__DBusWatchInternals.html#gec61655a4bd6186a6a1ec104771d8af5">00351</a> <a class="code" href="group__DBusWatchInternals.html#gec61655a4bd6186a6a1ec104771d8af5">_dbus_watch_list_add_watch</a> (<a class="code" href="structDBusWatchList.html">DBusWatchList</a> *watch_list,
<a name="l00352"></a>00352                             <a class="code" href="structDBusWatch.html">DBusWatch</a>     *watch)
<a name="l00353"></a>00353 {
<a name="l00354"></a>00354   <span class="keywordflow">if</span> (!<a class="code" href="group__DBusList.html#gd99045e79db46159babe69718f343053">_dbus_list_append</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>, watch))
<a name="l00355"></a>00355     <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>;
<a name="l00356"></a>00356   
<a name="l00357"></a>00357   <a class="code" href="group__DBusWatchInternals.html#g0db8530cc53589589d67dfb35d03db61">_dbus_watch_ref</a> (watch);
<a name="l00358"></a>00358 
<a name="l00359"></a>00359   <span class="keywordflow">if</span> (watch_list-&gt;<a class="code" href="structDBusWatchList.html#e515ab01e8d08e6b252e468be7dc7074">add_watch_function</a> != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00360"></a>00360     {
<a name="l00361"></a>00361       _dbus_verbose (<span class="stringliteral">"Adding watch on fd %d\n"</span>,
<a name="l00362"></a>00362                      <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (watch));
<a name="l00363"></a>00363       
<a name="l00364"></a>00364       <span class="keywordflow">if</span> (!(* watch_list-&gt;<a class="code" href="structDBusWatchList.html#e515ab01e8d08e6b252e468be7dc7074">add_watch_function</a>) (watch,
<a name="l00365"></a>00365                                                watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>))
<a name="l00366"></a>00366         {
<a name="l00367"></a>00367           <a class="code" href="group__DBusList.html#gd93f1fc853914144e94fc7a7dc0945aa">_dbus_list_remove_last</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>, watch);
<a name="l00368"></a>00368           <a class="code" href="group__DBusWatchInternals.html#g7d27dfc13a3ccfbaa99ceab331bb46f0">_dbus_watch_unref</a> (watch);
<a name="l00369"></a>00369           <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>;
<a name="l00370"></a>00370         }
<a name="l00371"></a>00371     }
<a name="l00372"></a>00372   
<a name="l00373"></a>00373   <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;
<a name="l00374"></a>00374 }
<a name="l00375"></a>00375 
<a name="l00383"></a>00383 <span class="keywordtype">void</span>
<a name="l00384"></a><a class="code" href="group__DBusWatchInternals.html#g76894d297bc7d7d23cbacdc2b1778884">00384</a> <a class="code" href="group__DBusWatchInternals.html#g76894d297bc7d7d23cbacdc2b1778884">_dbus_watch_list_remove_watch</a>  (<a class="code" href="structDBusWatchList.html">DBusWatchList</a> *watch_list,
<a name="l00385"></a>00385                                 <a class="code" href="structDBusWatch.html">DBusWatch</a>     *watch)
<a name="l00386"></a>00386 {
<a name="l00387"></a>00387   <span class="keywordflow">if</span> (!<a class="code" href="group__DBusList.html#g202e6ac8ad3e4a9d4413e0248ffcf3e3">_dbus_list_remove</a> (&amp;watch_list-&gt;<a class="code" href="structDBusWatchList.html#b4e73fc61203dd03949f0b7d163d456d">watches</a>, watch))
<a name="l00388"></a>00388     <a class="code" href="group__DBusInternalsUtils.html#g0c4961ec784874f1b1f3aeccea8d3da1">_dbus_assert_not_reached</a> (<span class="stringliteral">"Nonexistent watch was removed"</span>);
<a name="l00389"></a>00389   
<a name="l00390"></a>00390   <span class="keywordflow">if</span> (watch_list-&gt;<a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a> != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00391"></a>00391     {
<a name="l00392"></a>00392       _dbus_verbose (<span class="stringliteral">"Removing watch on fd %d\n"</span>,
<a name="l00393"></a>00393                      <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (watch));
<a name="l00394"></a>00394       
<a name="l00395"></a>00395       (* watch_list-&gt;<a class="code" href="structDBusWatchList.html#3b4b6c6d8aeb77d9b08404575e0b805a">remove_watch_function</a>) (watch,
<a name="l00396"></a>00396                                              watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>);
<a name="l00397"></a>00397     }
<a name="l00398"></a>00398   
<a name="l00399"></a>00399   <a class="code" href="group__DBusWatchInternals.html#g7d27dfc13a3ccfbaa99ceab331bb46f0">_dbus_watch_unref</a> (watch);
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401 
<a name="l00410"></a>00410 <span class="keywordtype">void</span>
<a name="l00411"></a><a class="code" href="group__DBusWatchInternals.html#g14bb50e8663a1d9d3960b4f73c09c097">00411</a> <a class="code" href="group__DBusWatchInternals.html#g14bb50e8663a1d9d3960b4f73c09c097">_dbus_watch_list_toggle_watch</a> (<a class="code" href="structDBusWatchList.html">DBusWatchList</a>           *watch_list,
<a name="l00412"></a>00412                                <a class="code" href="structDBusWatch.html">DBusWatch</a>               *watch,
<a name="l00413"></a>00413                                <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>              enabled)
<a name="l00414"></a>00414 {
<a name="l00415"></a>00415   enabled = !!enabled;
<a name="l00416"></a>00416   
<a name="l00417"></a>00417   <span class="keywordflow">if</span> (enabled == watch-&gt;<a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">enabled</a>)
<a name="l00418"></a>00418     <span class="keywordflow">return</span>;
<a name="l00419"></a>00419 
<a name="l00420"></a>00420   watch-&gt;<a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">enabled</a> = enabled;
<a name="l00421"></a>00421   
<a name="l00422"></a>00422   <span class="keywordflow">if</span> (watch_list-&gt;<a class="code" href="structDBusWatchList.html#ed21ba690eb810c4c2da581feaed822a">watch_toggled_function</a> != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00423"></a>00423     {
<a name="l00424"></a>00424       _dbus_verbose (<span class="stringliteral">"Toggling watch %p on fd %d to %d\n"</span>,
<a name="l00425"></a>00425                      watch, <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (watch), watch-&gt;enabled);
<a name="l00426"></a>00426       
<a name="l00427"></a>00427       (* watch_list-&gt;<a class="code" href="structDBusWatchList.html#ed21ba690eb810c4c2da581feaed822a">watch_toggled_function</a>) (watch,
<a name="l00428"></a>00428                                               watch_list-&gt;<a class="code" href="structDBusWatchList.html#767770241baf8ddcdb4b5c4b4f2a9727">watch_data</a>);
<a name="l00429"></a>00429     }
<a name="l00430"></a>00430 }
<a name="l00431"></a>00431 
<a name="l00444"></a>00444 <span class="keywordtype">void</span>
<a name="l00445"></a><a class="code" href="group__DBusWatchInternals.html#g75620808f4d2245914012a41e3b82f3c">00445</a> <a class="code" href="group__DBusWatchInternals.html#g75620808f4d2245914012a41e3b82f3c">_dbus_watch_set_handler</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a>        *watch,
<a name="l00446"></a>00446                          <a class="code" href="group__DBusWatchInternals.html#gcc4276cd0b01ed7c011658f164ce575a">DBusWatchHandler</a>  handler,
<a name="l00447"></a>00447                          <span class="keywordtype">void</span>             *data,
<a name="l00448"></a>00448                          <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a>  free_data_function)
<a name="l00449"></a>00449 {
<a name="l00450"></a>00450   <span class="keywordflow">if</span> (watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a>)
<a name="l00451"></a>00451     (* watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a>) (watch-&gt;<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a>);
<a name="l00452"></a>00452 
<a name="l00453"></a>00453   watch-&gt;<a class="code" href="structDBusWatch.html#ad3fb97da0ad7e5897611930f7a1c3e9">handler</a> = handler;
<a name="l00454"></a>00454   watch-&gt;<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a> = data;
<a name="l00455"></a>00455   watch-&gt;<a class="code" href="structDBusWatch.html#64eaf9b88cebfc640bc85d0fd37184c8">free_handler_data_function</a> = free_data_function;
<a name="l00456"></a>00456 }
<a name="l00457"></a>00457 
<a name="l00489"></a>00489 <span class="keywordtype">int</span>
<a name="l00490"></a><a class="code" href="group__DBusWatch.html#g62d7e86fe386ed48fb90d443b3a2ce7a">00490</a> <a class="code" href="group__DBusWatch.html#g62d7e86fe386ed48fb90d443b3a2ce7a">dbus_watch_get_fd</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00491"></a>00491 {
<a name="l00492"></a>00492   <span class="keywordflow">return</span> <a class="code" href="group__DBusWatch.html#g15df7f6120ead3e09bec8a70d3c43c0d">dbus_watch_get_unix_fd</a>(watch);
<a name="l00493"></a>00493 }
<a name="l00494"></a>00494 
<a name="l00508"></a>00508 <span class="keywordtype">int</span>
<a name="l00509"></a><a class="code" href="group__DBusWatch.html#g15df7f6120ead3e09bec8a70d3c43c0d">00509</a> <a class="code" href="group__DBusWatch.html#g15df7f6120ead3e09bec8a70d3c43c0d">dbus_watch_get_unix_fd</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00510"></a>00510 {
<a name="l00511"></a>00511   <span class="comment">/* FIXME remove #ifdef and do this on a lower level</span>
<a name="l00512"></a>00512 <span class="comment">   * (watch should have set_socket and set_unix_fd and track</span>
<a name="l00513"></a>00513 <span class="comment">   * which it has, and the transport should provide the</span>
<a name="l00514"></a>00514 <span class="comment">   * appropriate watch type)</span>
<a name="l00515"></a>00515 <span class="comment">   */</span>
<a name="l00516"></a>00516 <span class="preprocessor">#ifdef DBUS_UNIX</span>
<a name="l00517"></a>00517 <span class="preprocessor"></span>  <span class="keywordflow">return</span> watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a>;
<a name="l00518"></a>00518 <span class="preprocessor">#else</span>
<a name="l00519"></a>00519 <span class="preprocessor"></span>  <span class="keywordflow">return</span> -1;
<a name="l00520"></a>00520 <span class="preprocessor">#endif</span>
<a name="l00521"></a>00521 <span class="preprocessor"></span>}
<a name="l00522"></a>00522 
<a name="l00535"></a>00535 <span class="keywordtype">int</span>
<a name="l00536"></a><a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">00536</a> <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00537"></a>00537 {
<a name="l00538"></a>00538   <span class="keywordflow">return</span> watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a>;
<a name="l00539"></a>00539 }
<a name="l00540"></a>00540 
<a name="l00554"></a>00554 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>
<a name="l00555"></a><a class="code" href="group__DBusWatch.html#gf172a2b1d1f82333e67cec8d99c9204a">00555</a> <a class="code" href="group__DBusWatch.html#gf172a2b1d1f82333e67cec8d99c9204a">dbus_watch_get_flags</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00556"></a>00556 {
<a name="l00557"></a>00557   <a class="code" href="group__DBusInternalsUtils.html#g129c6c03f011cdc171934d5d386cc797">_dbus_assert</a> ((watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> &amp; VALID_WATCH_FLAGS) == watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a>);
<a name="l00558"></a>00558 
<a name="l00559"></a>00559   <span class="keywordflow">return</span> watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a>;
<a name="l00560"></a>00560 }
<a name="l00561"></a>00561 
<a name="l00569"></a>00569 <span class="keywordtype">void</span>*
<a name="l00570"></a><a class="code" href="group__DBusWatch.html#g8dcdbd07f15a56207af4a36cb005da77">00570</a> <a class="code" href="group__DBusWatch.html#g8dcdbd07f15a56207af4a36cb005da77">dbus_watch_get_data</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00571"></a>00571 {
<a name="l00572"></a>00572   <span class="keywordflow">return</span> watch-&gt;<a class="code" href="structDBusWatch.html#71877a39d8c2a7d533c0c6f280648d53">data</a>;
<a name="l00573"></a>00573 }
<a name="l00574"></a>00574 
<a name="l00586"></a>00586 <span class="keywordtype">void</span>
<a name="l00587"></a><a class="code" href="group__DBusWatch.html#g5c75a65cf0680956cc0188d86a05cfae">00587</a> <a class="code" href="group__DBusWatch.html#g5c75a65cf0680956cc0188d86a05cfae">dbus_watch_set_data</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a>        *watch,
<a name="l00588"></a>00588                      <span class="keywordtype">void</span>             *data,
<a name="l00589"></a>00589                      <a class="code" href="group__DBusMemory.html#g8792ec2b2b8626ca28022faf51ec415a">DBusFreeFunction</a>  free_data_function)
<a name="l00590"></a>00590 {
<a name="l00591"></a>00591   _dbus_verbose (<span class="stringliteral">"Setting watch fd %d data to data = %p function = %p from data = %p function = %p\n"</span>,
<a name="l00592"></a>00592                  <a class="code" href="group__DBusWatch.html#g91308f393d41b31babda17c83833517f">dbus_watch_get_socket</a> (watch),
<a name="l00593"></a>00593                  data, free_data_function, watch-&gt;data, watch-&gt;free_data_function);
<a name="l00594"></a>00594   
<a name="l00595"></a>00595   <span class="keywordflow">if</span> (watch-&gt;free_data_function != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)
<a name="l00596"></a>00596     (* watch-&gt;free_data_function) (watch-&gt;data);
<a name="l00597"></a>00597   
<a name="l00598"></a>00598   watch-&gt;data = data;
<a name="l00599"></a>00599   watch-&gt;free_data_function = free_data_function;
<a name="l00600"></a>00600 }
<a name="l00601"></a>00601 
<a name="l00609"></a>00609 <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>
<a name="l00610"></a><a class="code" href="group__DBusWatch.html#ge7a91e6d4d1bc187419c47c522e33a8f">00610</a> <a class="code" href="group__DBusWatch.html#ge7a91e6d4d1bc187419c47c522e33a8f">dbus_watch_get_enabled</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a> *watch)
<a name="l00611"></a>00611 {
<a name="l00612"></a>00612   <a class="code" href="group__DBusInternalsUtils.html#g129c6c03f011cdc171934d5d386cc797">_dbus_assert</a> (watch != <a class="code" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);
<a name="l00613"></a>00613   <span class="keywordflow">return</span> watch-&gt;<a class="code" href="structDBusWatch.html#010564b43e0c7dd438b9ac4b0c1dbe64">enabled</a>;
<a name="l00614"></a>00614 }
<a name="l00615"></a>00615 
<a name="l00616"></a>00616 
<a name="l00639"></a>00639 <a class="code" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>
<a name="l00640"></a><a class="code" href="group__DBusWatch.html#gc2acdb1794450ac01a43ec4c3e07ebf7">00640</a> <a class="code" href="group__DBusWatch.html#gc2acdb1794450ac01a43ec4c3e07ebf7">dbus_watch_handle</a> (<a class="code" href="structDBusWatch.html">DBusWatch</a>    *watch,
<a name="l00641"></a>00641                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>  flags)
<a name="l00642"></a>00642 {
<a name="l00643"></a>00643 <span class="preprocessor">#ifndef DBUS_DISABLE_CHECKS</span>
<a name="l00644"></a>00644 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a> &lt; 0 || watch-&gt;<a class="code" href="structDBusWatch.html#7f1c2c609410f58a2328681c2893f70a">flags</a> == 0)
<a name="l00645"></a>00645     {
<a name="l00646"></a>00646       <a class="code" href="group__DBusInternalsUtils.html#g63f2f8a068454b781f214ba596e313b4">_dbus_warn_check_failed</a> (<span class="stringliteral">"%s: Watch is invalid, it should have been removed\n"</span>,
<a name="l00647"></a>00647                                _DBUS_FUNCTION_NAME);
<a name="l00648"></a>00648       <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;
<a name="l00649"></a>00649     }
<a name="l00650"></a>00650 <span class="preprocessor">#endif</span>
<a name="l00651"></a>00651 <span class="preprocessor"></span>    
<a name="l00652"></a>00652   _dbus_return_val_if_fail (watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a> &gt;= 0 <span class="comment">/* fails if watch was removed */</span>, <a class="code" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>);
<a name="l00653"></a>00653   
<a name="l00654"></a>00654   <a class="code" href="group__DBusWatchInternals.html#gb8f49926fe9ee56cb4ae7c1c8071cca3">_dbus_watch_sanitize_condition</a> (watch, &amp;flags);
<a name="l00655"></a>00655 
<a name="l00656"></a>00656   <span class="keywordflow">if</span> (flags == 0)
<a name="l00657"></a>00657     {
<a name="l00658"></a>00658       _dbus_verbose (<span class="stringliteral">"After sanitization, watch flags on fd %d were 0\n"</span>,
<a name="l00659"></a>00659                      watch-&gt;<a class="code" href="structDBusWatch.html#b4021cce958b50cbcda5eeabc6af2217">fd</a>);
<a name="l00660"></a>00660       <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;
<a name="l00661"></a>00661     }
<a name="l00662"></a>00662   <span class="keywordflow">else</span>
<a name="l00663"></a>00663     <span class="keywordflow">return</span> (* watch-&gt;<a class="code" href="structDBusWatch.html#ad3fb97da0ad7e5897611930f7a1c3e9">handler</a>) (watch, flags,
<a name="l00664"></a>00664                                watch-&gt;<a class="code" href="structDBusWatch.html#e906b28caa8a4323f85c882abe901e87">handler_data</a>);
<a name="l00665"></a>00665 }
<a name="l00666"></a>00666 
<a name="l00667"></a>00667 
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 14 22:26:13 2009 for D-Bus by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

Anon7 - 2021