On Jan 11, 2008, at 10:50 AM, Matthew Toseland wrote:

>>>> Log:
>>>> trivial: comments, logging, readability
>>>
>>> Doesn't look that way to me e.g. timeAllSent affects when we kill  
>>> the
>>> transfer. What's going on here?
>>
>> There was more than one problem with timeAllSent... there are a  
>> number
>> of commits regarding the block transmittion/reception. This change
>> actually is trivial because the only time that timeAllSent was set is
>> on breaking out of the loop, so I moved it to the break statement so
>> that one can see that.
>
> And what about removing else if(_allSent) { ... return } ?

It was already checked before that conditional statement so I replaced  
it with an unknown-message check:

if (_sendComplete)
        return;

if (msg==this_type) {
        do(that_thing);
} else if (msg==that_type)
        do(the_other_thing);
} else if (_sendComplete) {
        return;
}

But... even the first check is ultimately removed in r17004 to make  
_sendComplete *only* a signal from the blocking-send() thread to the  
_senderThread; eliminating a major race condition (if _senderThread  
was the first to notice that (1) client disconnected, or (2) prb  
aborted, all that the send() thread knew was "_sendComplete", when if  
it would just loop again it would notice the exact condition itself).

It may be easier to read the final version of the transmitter /  
receiver, they are a lot more readable now, and I tested them with 10%  
packet loss and they worked fine.

--
Robert Hailey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080111/0182b014/attachment.html>

Reply via email to