Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > 9601c7beb4ff23e834bfa171795ed560 > files > 81

vidalia-0.2.9-1mdv2010.1.i586.rpm

<!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"/>
<title>Vidalia: ControlConnection.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_b47abd1aad201a152869566145babb61.html">src</a>&nbsp;&raquo;&nbsp;<a class="el" href="dir_67a2ce25601334632bdc5ef4a72c0f17.html">torcontrol</a>
  </div>
</div>
<div class="contents">
<h1>ControlConnection.h</h1><a href="_control_connection_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">**  This file is part of Vidalia, and is subject to the license terms in the</span>
<a name="l00003"></a>00003 <span class="comment">**  LICENSE file, found in the top level directory of this distribution. If </span>
<a name="l00004"></a>00004 <span class="comment">**  you did not receive the LICENSE file with this file, you may obtain it</span>
<a name="l00005"></a>00005 <span class="comment">**  from the Vidalia source package distributed by the Vidalia Project at</span>
<a name="l00006"></a>00006 <span class="comment">**  http://www.vidalia-project.net/. No part of Vidalia, including this file,</span>
<a name="l00007"></a>00007 <span class="comment">**  may be copied, modified, propagated, or distributed except according to</span>
<a name="l00008"></a>00008 <span class="comment">**  the terms described in the LICENSE file.</span>
<a name="l00009"></a>00009 <span class="comment">*/</span>
<a name="l00010"></a>00010 
<a name="l00011"></a>00011 <span class="comment">/*</span>
<a name="l00012"></a>00012 <span class="comment">** \file ControlConnection.h</span>
<a name="l00013"></a>00013 <span class="comment">** \version $Id: ControlConnection.h 4054 2009-08-17 02:25:08Z edmanm $</span>
<a name="l00014"></a>00014 <span class="comment">** \brief A connection to Tor&#39;s control interface, responsible for sending and</span>
<a name="l00015"></a>00015 <span class="comment">** receiving commands and events</span>
<a name="l00016"></a>00016 <span class="comment">**/</span>
<a name="l00017"></a>00017 
<a name="l00018"></a>00018 <span class="preprocessor">#ifndef _CONTROLCONNECTION_H</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define _CONTROLCONNECTION_H</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="_control_socket_8h.html">ControlSocket.h</a>&quot;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="_tor_events_8h.html">TorEvents.h</a>&quot;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;<a class="code" href="_send_command_event_8h.html">SendCommandEvent.h</a>&quot;</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;QThread&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;QMutex&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;QQueue&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;QWaitCondition&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;QTimer&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;QHostAddress&gt;</span>
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a><a class="code" href="class_control_connection.html">00033</a> <span class="keyword">class </span><a class="code" href="class_control_connection.html">ControlConnection</a> : <span class="keyword">public</span> QThread
<a name="l00034"></a>00034 {
<a name="l00035"></a>00035   Q_OBJECT
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00038"></a>00038 <span class="comment">  /** Control connection status */</span>
<a name="l00039"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">00039</a>   <span class="keyword">enum</span> <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">Status</a> {
<a name="l00040"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ada8fca398689e2de1266ae02a7032a5516">00040</a>     <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ada8fca398689e2de1266ae02a7032a5516">Unset</a>,         <span class="comment">/**&lt; Control connection status is not yet set. */</span>
<a name="l00041"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adaa6ea0b95567f8d0cc5f5d8ef93899ca8">00041</a>     <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adaa6ea0b95567f8d0cc5f5d8ef93899ca8">Disconnected</a>,  <span class="comment">/**&lt; Control connection disconnected.     */</span>
<a name="l00042"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ada9f904aa084cadfd82bb74fa554c4ac2f">00042</a>     <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ada9f904aa084cadfd82bb74fa554c4ac2f">Disconnecting</a>, <span class="comment">/**&lt; Control connection is disconnecting. */</span>
<a name="l00043"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adabd3d25f7cb53a85649ed2e47c19fef97">00043</a>     <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adabd3d25f7cb53a85649ed2e47c19fef97">Connecting</a>,    <span class="comment">/**&lt; Control connection attempt pending.  */</span>
<a name="l00044"></a><a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adaa5310cd01386f5d985911e51adfea403">00044</a>     <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77adaa5310cd01386f5d985911e51adfea403">Connected</a>      <span class="comment">/**&lt; Control connection established.      */</span>
<a name="l00045"></a>00045   };
<a name="l00046"></a>00046 <span class="comment"></span>
<a name="l00047"></a>00047 <span class="comment">  /** Default constructor. */</span>
<a name="l00048"></a>00048   <a class="code" href="class_control_connection.html#afd4d3c320a0b3725daeb5ce9ed02edc5">ControlConnection</a>(<a class="code" href="class_tor_events.html">TorEvents</a> *events = 0);<span class="comment"></span>
<a name="l00049"></a>00049 <span class="comment">  /** Destructor. */</span>
<a name="l00050"></a>00050   <a class="code" href="class_control_connection.html#a7eaa62d1e9832b206a3154224d8286c7">~ControlConnection</a>();
<a name="l00051"></a>00051 <span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment">  /** Connect to the specified Tor control interface. */</span>
<a name="l00053"></a>00053   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#af18111442847fa19e5dbc16d5834f342">connect</a>(<span class="keyword">const</span> QHostAddress &amp;addr, quint16 port);<span class="comment"></span>
<a name="l00054"></a>00054 <span class="comment">  /** Cancels a pending control connection to Tor. */</span>
<a name="l00055"></a>00055   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a0f737e7f32923003556eb6787a089ccd">cancelConnect</a>();<span class="comment"></span>
<a name="l00056"></a>00056 <span class="comment">  /** Disconnect from Tor&#39;s control interface. */</span>
<a name="l00057"></a>00057   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a63ff0aa4d96112e21566a64f5a25d8a7">disconnect</a>();<span class="comment"></span>
<a name="l00058"></a>00058 <span class="comment">  /** Returns true if the control socket is connected to Tor. */</span>
<a name="l00059"></a>00059   <span class="keywordtype">bool</span> <a class="code" href="class_control_connection.html#a9503aa0c9eab967da5686ffa4edc447f">isConnected</a>();<span class="comment"></span>
<a name="l00060"></a>00060 <span class="comment">  /** Returns the status of the control connection. */</span>
<a name="l00061"></a>00061   <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">Status</a> <a class="code" href="class_control_connection.html#a34bcf7d414507cba5dd9905b78282f17">status</a>();<span class="comment"></span>
<a name="l00062"></a>00062 <span class="comment">  /** Sends a control command to Tor and waits for the reply. */</span>
<a name="l00063"></a>00063   <span class="keywordtype">bool</span> <a class="code" href="class_control_connection.html#aa5e4ff44b7c6e0773eda0a2f90505657">send</a>(<span class="keyword">const</span> <a class="code" href="class_control_command.html">ControlCommand</a> &amp;cmd, <a class="code" href="class_control_reply.html">ControlReply</a> &amp;reply, QString *errmsg = 0);<span class="comment"></span>
<a name="l00064"></a>00064 <span class="comment">  /** Sends a control command to Tor and does not wait for a reply. */</span>
<a name="l00065"></a>00065   <span class="keywordtype">bool</span> <a class="code" href="class_control_connection.html#aa5e4ff44b7c6e0773eda0a2f90505657">send</a>(<span class="keyword">const</span> <a class="code" href="class_control_command.html">ControlCommand</a> &amp;cmd, QString *errmsg = 0);
<a name="l00066"></a>00066 
<a name="l00067"></a>00067 signals:<span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">  /** Emitted when a control connection has been established. */</span>
<a name="l00069"></a>00069   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a4c11c6081d1e5838832b6c1b0750571b">connected</a>();<span class="comment"></span>
<a name="l00070"></a>00070 <span class="comment">  /** Emitted when a control connection has been closed. */</span>
<a name="l00071"></a>00071   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a41452502fd8508b45b15296871ba22ed">disconnected</a>();<span class="comment"></span>
<a name="l00072"></a>00072 <span class="comment">  /** Emitted when a control connection fails. */</span>
<a name="l00073"></a>00073   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a48c3be68d03244159c580d32429c94b4">connectFailed</a>(QString errmsg);
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="keyword">private</span> slots:<span class="comment"></span>
<a name="l00076"></a>00076 <span class="comment">  /** Connects to Tor&#39;s control interface. */</span>
<a name="l00077"></a>00077   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#af18111442847fa19e5dbc16d5834f342">connect</a>();<span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment">  /** Called when there is data on the control socket. */</span>
<a name="l00079"></a>00079   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a9dad84fe644cb9c0a786b1c7962240e8">onReadyRead</a>();<span class="comment"></span>
<a name="l00080"></a>00080 <span class="comment">  /** Called when the control socket is connected. */</span>
<a name="l00081"></a>00081   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a16d9c59d084b2a0101b356eb1a4ea315">onConnected</a>();<span class="comment"></span>
<a name="l00082"></a>00082 <span class="comment">  /** Called when the control socket is disconnected. */</span>
<a name="l00083"></a>00083   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a79eaeff93b3c688ff572e439fc9d4df8">onDisconnected</a>();<span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">  /** Called when the control socket encounters an error. */</span>
<a name="l00085"></a>00085   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a0f3c03d48accbfaeea2539c982009196">onError</a>(QAbstractSocket::SocketError <a class="code" href="namespacetc.html#aa7353218fd7baef0876bbb422ce818af">error</a>);
<a name="l00086"></a>00086 
<a name="l00087"></a>00087 <span class="keyword">private</span>:<span class="comment"></span>
<a name="l00088"></a>00088 <span class="comment">  /** Sets the control connection status. */</span>
<a name="l00089"></a>00089   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a3ad24531cc04488a33850731c171499d">setStatus</a>(<a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">Status</a> <a class="code" href="class_control_connection.html#a34bcf7d414507cba5dd9905b78282f17">status</a>);<span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment">  /** Returns the string description of &lt;b&gt;status&lt;/b&gt;. */</span>
<a name="l00091"></a>00091   QString <a class="code" href="class_control_connection.html#a999aac9c733ab7f829a20a5042625bd6">statusString</a>(<a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">Status</a> <a class="code" href="class_control_connection.html#a34bcf7d414507cba5dd9905b78282f17">status</a>);<span class="comment"></span>
<a name="l00092"></a>00092 <span class="comment">  /** Main thread implementation. */</span>
<a name="l00093"></a>00093   <span class="keywordtype">void</span> <a class="code" href="class_control_connection.html#a5163cd5b981c83373ed6c41e05063de5">run</a>();
<a name="l00094"></a>00094 
<a name="l00095"></a><a class="code" href="class_control_connection.html#a19bab8aff5488d33d9d89f54b413d425">00095</a>   <a class="code" href="class_control_socket.html">ControlSocket</a>* <a class="code" href="class_control_connection.html#a19bab8aff5488d33d9d89f54b413d425">_sock</a>; <span class="comment">/**&lt; Socket used to communicate with Tor. */</span>
<a name="l00096"></a><a class="code" href="class_control_connection.html#aec45c94f839cf699724de0cf0131cfdc">00096</a>   <a class="code" href="class_tor_events.html">TorEvents</a>* <a class="code" href="class_control_connection.html#aec45c94f839cf699724de0cf0131cfdc">_events</a>; <span class="comment">/**&lt; Dispatches asynchronous events from Tor. */</span>
<a name="l00097"></a><a class="code" href="class_control_connection.html#a9e88a144a3321f31ebccd51f1aa4ccc2">00097</a>   <a class="code" href="class_control_connection.html#a60fe264cf74ba322bc0fe4693e2e77ad">Status</a> <a class="code" href="class_control_connection.html#a9e88a144a3321f31ebccd51f1aa4ccc2">_status</a>; <span class="comment">/**&lt; Status of the control connection. */</span>
<a name="l00098"></a><a class="code" href="class_control_connection.html#a89f24cc2722d64f83ac4407d0c4c6ae9">00098</a>   QHostAddress <a class="code" href="class_control_connection.html#a89f24cc2722d64f83ac4407d0c4c6ae9">_addr</a>; <span class="comment">/**&lt; Address of Tor&#39;s control interface. */</span>
<a name="l00099"></a><a class="code" href="class_control_connection.html#a205fdd450015f8b7d34ae2b7282d4835">00099</a>   quint16 <a class="code" href="class_control_connection.html#a205fdd450015f8b7d34ae2b7282d4835">_port</a>; <span class="comment">/**&lt; Port of Tor&#39;s control interface. */</span>
<a name="l00100"></a><a class="code" href="class_control_connection.html#a1147b8d98aba5e5d12e0a2d1792372ae">00100</a>   QMutex <a class="code" href="class_control_connection.html#a1147b8d98aba5e5d12e0a2d1792372ae">_connMutex</a>; <span class="comment">/**&lt; Mutex around the control socket. */</span>
<a name="l00101"></a><a class="code" href="class_control_connection.html#ac9d5bd332d6dfe9cd3e0a977f2cae0e9">00101</a>   QMutex <a class="code" href="class_control_connection.html#ac9d5bd332d6dfe9cd3e0a977f2cae0e9">_recvMutex</a>; <span class="comment">/**&lt; Mutex around the queue of ReceiveWaiters. */</span>
<a name="l00102"></a><a class="code" href="class_control_connection.html#a86de4e5b680f5fe1a7064e5191134498">00102</a>   QMutex <a class="code" href="class_control_connection.html#a86de4e5b680f5fe1a7064e5191134498">_statusMutex</a>; <span class="comment">/**&lt; Mutex around the connection status value. */</span>
<a name="l00103"></a><a class="code" href="class_control_connection.html#a237dde266f22e3a1a76abc0137d255a5">00103</a>   <span class="keywordtype">int</span> <a class="code" href="class_control_connection.html#a237dde266f22e3a1a76abc0137d255a5">_connectAttempt</a>; <span class="comment">/**&lt; How many times we&#39;ve tried to connect to Tor while</span>
<a name="l00104"></a>00104 <span class="comment">                            waiting for Tor to start. */</span>
<a name="l00105"></a><a class="code" href="class_control_connection.html#ab13316cbf2e92eb183ca79d4e3da553e">00105</a>   QTimer* <a class="code" href="class_control_connection.html#ab13316cbf2e92eb183ca79d4e3da553e">_connectTimer</a>; <span class="comment">/**&lt; Timer used to delay connect attempts. */</span>
<a name="l00106"></a>00106 <span class="comment"></span>
<a name="l00107"></a>00107 <span class="comment">  /** Private class used to wait for a response to a control command. */</span>
<a name="l00108"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html">00108</a>   <span class="keyword">class </span><a class="code" href="class_control_connection_1_1_receive_waiter.html">ReceiveWaiter</a> {
<a name="l00109"></a>00109     <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00110"></a>00110 <span class="comment">      /** Default constructor. */</span>
<a name="l00111"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#a5ccf21346ca5e07c7404c63776e611ee">00111</a>       <a class="code" href="class_control_connection_1_1_receive_waiter.html#a5ccf21346ca5e07c7404c63776e611ee">ReceiveWaiter</a>() { <a class="code" href="class_control_connection_1_1_receive_waiter.html#a3ace3ae22c81890b8488a1d86e3487cc">_status</a> = <a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8ac8adede576e957f9ad2d776e8d826e08">Waiting</a>; }<span class="comment"></span>
<a name="l00112"></a>00112 <span class="comment">      /** Waits for and gets the reply from a control command. */</span>
<a name="l00113"></a>00113       <span class="keywordtype">bool</span> <a class="code" href="class_control_connection_1_1_receive_waiter.html#ac834f75364058b66233dc464e52ad514">getResult</a>(<a class="code" href="class_control_reply.html">ControlReply</a> *reply, QString *errmsg = 0);<span class="comment"></span>
<a name="l00114"></a>00114 <span class="comment">      /** Sets the result and reply from a control command. */</span>
<a name="l00115"></a>00115       <span class="keywordtype">void</span> <a class="code" href="class_control_connection_1_1_receive_waiter.html#afa6c4b6c506d69df960b934b4ba95095">setResult</a>(<span class="keywordtype">bool</span> success, <span class="keyword">const</span> <a class="code" href="class_control_reply.html">ControlReply</a> &amp;reply, 
<a name="l00116"></a>00116                      <span class="keyword">const</span> QString &amp;errmsg = QString());
<a name="l00117"></a>00117     <span class="keyword">private</span>:<span class="comment"></span>
<a name="l00118"></a>00118 <span class="comment">      /** Status of the receive waiter. */</span>
<a name="l00119"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8ac8adede576e957f9ad2d776e8d826e08">00119</a>       <span class="keyword">enum</span> <a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8">ReceiveStatus</a> { <a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8ac8adede576e957f9ad2d776e8d826e08">Waiting</a>, <a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8a5fd84806648e8bee2497dc12a6ffa2b1">Failed</a>, <a class="code" href="class_control_connection_1_1_receive_waiter.html#a243767011011dce8e322ea83fae716e8ac21b8b1bc732c32ada8481969551fdba">Success</a> } <a class="code" href="class_control_connection_1_1_receive_waiter.html#a3ace3ae22c81890b8488a1d86e3487cc">_status</a>;
<a name="l00120"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#a6e46c2a68ee8f4c653595da8719c09a8">00120</a>       <a class="code" href="class_control_reply.html">ControlReply</a> <a class="code" href="class_control_connection_1_1_receive_waiter.html#a6e46c2a68ee8f4c653595da8719c09a8">_reply</a>; <span class="comment">/**&lt; Reply to a previous command. */</span>
<a name="l00121"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#ad5410d6059c78f72381780a576d0d860">00121</a>       QMutex <a class="code" href="class_control_connection_1_1_receive_waiter.html#ad5410d6059c78f72381780a576d0d860">_mutex</a>; <span class="comment">/**&lt; Mutex around the wait condition. */</span>
<a name="l00122"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#a8634ba5ca3cb9b326d68d4760b20573e">00122</a>       QWaitCondition <a class="code" href="class_control_connection_1_1_receive_waiter.html#a8634ba5ca3cb9b326d68d4760b20573e">_waitCond</a>; <span class="comment">/**&lt; Waits for a control rpely. */</span>
<a name="l00123"></a><a class="code" href="class_control_connection_1_1_receive_waiter.html#a5a419730bbaa0d0d5708ba03c06bf4f7">00123</a>       QString <a class="code" href="class_control_connection_1_1_receive_waiter.html#a5a419730bbaa0d0d5708ba03c06bf4f7">_errmsg</a>; <span class="comment">/**&lt; Error message if the reply fails. */</span>
<a name="l00124"></a>00124   };
<a name="l00125"></a><a class="code" href="class_control_connection.html#a31fbf6a6d44dcb7f1444bfb8655eb898">00125</a>   QQueue&lt;ReceiveWaiter *&gt; <a class="code" href="class_control_connection.html#a31fbf6a6d44dcb7f1444bfb8655eb898">_recvQueue</a>; <span class="comment">/**&lt; Objects waiting for a reply. */</span>
<a name="l00126"></a><a class="code" href="class_control_connection.html#afb1f68bd6b76a157470ea2327ff62563">00126</a>   <a class="code" href="class_send_command_event_1_1_send_waiter.html">SendCommandEvent::SendWaiter</a>* <a class="code" href="class_control_connection.html#afb1f68bd6b76a157470ea2327ff62563">_sendWaiter</a>;
<a name="l00127"></a>00127 };
<a name="l00128"></a>00128 
<a name="l00129"></a>00129 <span class="preprocessor">#endif</span>
<a name="l00130"></a>00130 <span class="preprocessor"></span>
</pre></div></div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Mon Aug 30 22:58:54 2010 for Vidalia by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>