[dijjer-cvs] Dijjer/src/dijjer/io/xfer BlockTransmitter.java,1.19,1.20
Brought to you by:
gnovos
|
From: Chris C. <vo...@us...> - 2005-12-24 14:02:43
|
Update of /cvsroot/dijjer/Dijjer/src/dijjer/io/xfer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31816 Modified Files: BlockTransmitter.java Log Message: Moved synchronization to allow for fewer checks of isFinished() and avoid what may be very slight chances for race conditions. Index: BlockTransmitter.java =================================================================== RCS file: /cvsroot/dijjer/Dijjer/src/dijjer/io/xfer/BlockTransmitter.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** BlockTransmitter.java 4 Aug 2005 20:46:03 -0000 1.19 --- BlockTransmitter.java 24 Dec 2005 14:02:32 -0000 1.20 *************** *** 85,89 **** } }); ! while (!isFinished()) { if (_nextPacketSendTime < System.currentTimeMillis()) { _nextPacketSendTime = System.currentTimeMillis(); --- 85,91 ---- } }); ! sendloop: while (!isFinished()) { synchronized(this) { ! // Going to synchronize on this for the entire loop. This way we don't have to check on ! // isFinished so much since it will only change between loops and during the wait calls if (_nextPacketSendTime < System.currentTimeMillis()) { _nextPacketSendTime = System.currentTimeMillis(); *************** *** 94,103 **** long lTimeOut = _nextPacketSendTime - System.currentTimeMillis(); if (lTimeOut > 50) { ! synchronized (this) { ! try { ! this.wait(lTimeOut); ! } catch (InterruptedException e) { ! } } } lTime = System.currentTimeMillis() - lTime; --- 96,105 ---- long lTimeOut = _nextPacketSendTime - System.currentTimeMillis(); if (lTimeOut > 50) { ! try { ! this.wait(lTimeOut); ! } catch (InterruptedException e) { ! if (isFinished()) break sendloop; } + } lTime = System.currentTimeMillis() - lTime; *************** *** 116,139 **** } } ! if ((nextToSend == -1) && !isFinished()) { ! synchronized (this) { ! try { ! this.wait(); ! } catch (InterruptedException e) { ! } } } ! } while ((nextToSend == -1) && !isFinished()); ! if ((nextToSend != -1) && !isFinished()) { ! lTime = System.currentTimeMillis() - lTime; ! if (lTime > 3000) { ! Logger.warning("Waited " + lTime + "ms due to suitable packet unavailability (uid: " + _uid + ")"); ! } ! _lastPacketSendTime = System.currentTimeMillis(); ! _throttle.notifyOfPacketSent(); ! _usm.send(_dest, DMT.createPacketTransmit(_uid, nextToSend, _sent, _prb.getPacket(nextToSend))); ! _sent.setBit(nextToSend, true); } ! } } --- 118,138 ---- } } ! if (nextToSend == -1) { ! try { ! this.wait(); ! } catch (InterruptedException e) { ! if (isFinished()) break sendloop; } } ! } while (nextToSend == -1); ! lTime = System.currentTimeMillis() - lTime; ! if (lTime > 3000) { ! Logger.warning("Waited " + lTime + "ms due to suitable packet unavailability (uid: " + _uid + ")"); } ! _lastPacketSendTime = System.currentTimeMillis(); ! _throttle.notifyOfPacketSent(); ! _usm.send(_dest, DMT.createPacketTransmit(_uid, nextToSend, _sent, _prb.getPacket(nextToSend))); ! _sent.setBit(nextToSend, true); ! }} //end synchronized and sendloop } |