Review Request: Speed limit in ftp kio slave

Tushar Mehta mehtatus at gmail.com
Wed Aug 10 17:14:35 BST 2011



> On Aug. 10, 2011, 3:05 p.m., Thiago Macieira wrote:
> > kioslave/ftp/speedController.h, line 55
> > <http://git.reviewboard.kde.org/r/102267/diff/1/?file=31277#file31277line55>
> >
> >     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.
> 
> Dawit Alemayehu wrote:
>     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.

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?


- Tushar


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/102267/#review5606
-----------------------------------------------------------


On Aug. 9, 2011, 7:16 p.m., Tushar Mehta wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/102267/
> -----------------------------------------------------------
> 
> (Updated Aug. 9, 2011, 7:16 p.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Summary
> -------
> 
> - 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.
> 
> 
> Diffs
> -----
> 
>   kioslave/ftp/CMakeLists.txt e080b02 
>   kioslave/ftp/ftp.h 0bd375b 
>   kioslave/ftp/ftp.cpp 655524a 
>   kioslave/ftp/speedController.h PRE-CREATION 
>   kioslave/ftp/speedController.cpp PRE-CREATION 
> 
> Diff: http://git.reviewboard.kde.org/r/102267/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Tushar
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20110810/b84a8fff/attachment.htm>


More information about the kde-core-devel mailing list