[freenet-dev] [freenet-cvs] r16993 - trunk/freenet/src/freenet/io/xfer

Matthew Toseland toad at amphibian.dyndns.org
Sat Jan 12 20:08:53 UTC 2008


On Thursday 10 January 2008 16:40, robert at freenetproject.org wrote:
> Author: robert
> Date: 2008-01-10 16:40:27 +0000 (Thu, 10 Jan 2008)
> New Revision: 16993
> 
> Modified:
>    trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java
> Log:
> simplify _senderThread

You've removed the resetting of timeAllSent when _unsent.size() == 0. The rest 
is reasonable refactoring.
> 
> 
> Modified: trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java
> ===================================================================
> --- trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java	2008-01-10 
15:06:43 UTC (rev 16992)
> +++ trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java	2008-01-10 
16:40:27 UTC (rev 16993)
> @@ -81,61 +81,50 @@
>  			public void run() {
>  				while (!_sendComplete) {
>  					long startCycleTime = System.currentTimeMillis();
> +					int packetNo;
>  					try {
> -						while (true) {
> -							synchronized(_senderThread) {
> -								if(_unsent.size() != 0) {
> -									timeAllSent = -1;
> -									break;
> -								}
> -								// No unsent packets
> -								if(getNumSent() == _prb.getNumPackets()) {
> -									//No unreceived packets
> -									if(Logger.shouldLog(Logger.MINOR, this))
> -										Logger.minor(this, "Sent all blocks, none unsent");
> -									if(timeAllSent <= 0)
> -										timeAllSent = System.currentTimeMillis();
> -								}
> +						synchronized(_senderThread) {
> +							while (_unsent.size() == 0) {
>  								if(_sendComplete) return;
>  								_senderThread.wait(10*1000);
>  							}
> -						}
> -					} catch (InterruptedException e) {
> -					} catch (AbortedException e) {
> -						synchronized(_senderThread) {
> -							_sendComplete = true;
> -							_senderThread.notifyAll();
> -						}
> -						return;
> -					}
> -					int packetNo;
> -					try {
> -						synchronized(_senderThread) {
>  							packetNo = ((Integer) _unsent.removeFirst()).intValue();
>  						}
> -					} catch (NoSuchElementException nsee) {
> -						// back up to the top to check for completion
> +					} catch (InterruptedException e) {
> +						Logger.error(this, "_senderThread interrupted");
>  						continue;
>  					}
> -					delay(startCycleTime);
> -					if(_sendComplete) break;
> -					_sentPackets.setBit(packetNo, true);
> +					int totalPackets;
>  					try {
>  						_destination.sendAsync(DMT.createPacketTransmit(_uid, packetNo, 
_sentPackets, _prb.getPacket(packetNo)), null, PACKET_SIZE, _ctr);
>  						_ctr.sentPayload(PACKET_SIZE);
> +						totalPackets=_prb.getNumPackets();
>  					} catch (NotConnectedException e) {
>  						Logger.normal(this, "Terminating send: "+e);
>  						synchronized(_senderThread) {
>  							_sendComplete = true;
>  							_senderThread.notifyAll();
> +							return;
>  						}
>  					} catch (AbortedException e) {
>  						Logger.normal(this, "Terminating send due to abort: "+e);
>  						synchronized(_senderThread) {
>  							_sendComplete = true;
>  							_senderThread.notifyAll();
> +							return;
>  						}
>  					}
> +					synchronized (_senderThread) {
> +						_sentPackets.setBit(packetNo, true);
> +						if(_unsent.size() == 0 && getNumSent() == totalPackets) {
> +							//No unsent packets, no unreceived packets
> +							timeAllSent = System.currentTimeMillis();
> +							if(Logger.shouldLog(Logger.MINOR, this))
> +								Logger.minor(this, "Sent all blocks, none unsent");
> +							_senderThread.notifyAll();
> +						}
> +					}
> +					delay(startCycleTime);
>  				}
>  			}
>  
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://emu.freenetproject.org/pipermail/devl/attachments/20080112/fa03f076/attachment.pgp 


More information about the Devl mailing list