<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/102267/">http://git.reviewboard.kde.org/r/102267/</a>
     </td>
    </tr>
   </table>
   <br />








<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 10th, 2011, 3:05 p.m., <b>Thiago Macieira</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="http://git.reviewboard.kde.org/r/102267/diff/1/?file=31277#file31277line55" style="color: black; font-weight: bold; text-decoration: underline;">kioslave/ftp/speedController.h</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">private: // data members</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">55</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">  <span class="n">QTcpSocket</span>  <span class="o">*</span><span class="n">socket</span><span class="p">;</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This will not work for kio_http. You need to limit the transfer rate from the ioslave to the application, in KIO::SlaveBase::data(), or in KIO::SlaveInterface::data().

You don't get access to the QTcpSocket that KIO::TCPSlaveBase uses.</pre>
 </blockquote>



 <p>On August 10th, 2011, 3:28 p.m., <b>Dawit Alemayehu</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">That is not quite correct. You do have access to the socket. See KIO::TCpSlaveBase::socket. Also controlling the data at SlaveBase::data level is not quite the same as controlling it at the socket level, is it ? Granted the socket will stop reading from the pipe when its read buffer is full.</pre>
 </blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">In support to Dawit:
What I thought is when we control rate at socket level we are actually telling server not to send data at full rate. As we are not reading data from socket buffer at full rate, this will keep advertisement window in control and server will send data accordingly.

In support to thaigo:
Suppose you are not controlling at socket level, instead of it let say we are controlling one level above i.e. KIO::SlaveBase::data() then in that case also eventually after stabilization phase we will get our rate and server will send data at a rate at which we reading at data() level.

As this was my first try, I thought let me see if my logic works in one small module like ftp slave. If it works at this level, I can try now with same logic at data() level. Now If we are trying at data() level then I need to control how many bytes to pass from within data() function.

What you all say?</pre>
<br />




<p>- Tushar</p>


<br />
<p>On August 9th, 2011, 7:16 p.m., Tushar Mehta wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for kdelibs.</div>
<div>By Tushar Mehta.</div>


<p style="color: grey;"><i>Updated Aug. 9, 2011, 7:16 p.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">- This patch contains the basic code which will put the limit on download speed of the ftp data transfer.
- It is looking for "speed-limit" meta-data for deciding how much speed control is required.
- If this meta-data is not found, code will work as it was before and no speed control related code will come into picture.
- This patch is the most basic one which I have testing on my system and to the extent it is controlling the speed.
- Lets say if speed limit is 30 KBps then mostly will get the avg speed around 30 to 35 KBps.
- I am using QTime for measuring time elapsed between two socket read call and its precision is in millisecond. Looping is taking place in microsecond and thats why I am getting almost all the time 0 as time elapsed in between two calls.
- To solve the above problem usleep is introduced to make it sync with the timer.</pre>
  </td>
 </tr>
</table>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>kioslave/ftp/CMakeLists.txt <span style="color: grey">(e080b02)</span></li>

 <li>kioslave/ftp/ftp.h <span style="color: grey">(0bd375b)</span></li>

 <li>kioslave/ftp/ftp.cpp <span style="color: grey">(655524a)</span></li>

 <li>kioslave/ftp/speedController.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>kioslave/ftp/speedController.cpp <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/102267/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>