[Beepcore-java-commits] CVS: beepcore-java/src/org/beepcore/beep/core ChannelImpl.java,1.3,1.4 Tunin
Status: Beta
Brought to you by:
huston
From: Huston F. <hu...@us...> - 2003-05-27 21:37:46
|
Update of /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core In directory sc8-pr-cvs1:/tmp/cvs-serv19920/src/org/beepcore/beep/core Modified Files: ChannelImpl.java TuningProfile.java SessionImpl.java Log Message: initial windowing cleanup Index: ChannelImpl.java =================================================================== RCS file: /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core/ChannelImpl.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** ChannelImpl.java 16 May 2003 16:44:29 -0000 1.3 --- ChannelImpl.java 27 May 2003 21:37:40 -0000 1.4 *************** *** 115,121 **** private int recvWindowUsed; ! private long prevAckno; ! ! private int prevWindowUsed; private boolean notifyOnFirstFrame = true; --- 115,119 ---- private int recvWindowUsed; ! private int recvWindowFreed; private boolean notifyOnFirstFrame = true; *************** *** 159,165 **** state = STATE_INITIALIZED; recvWindowUsed = 0; recvWindowSize = DEFAULT_WINDOW_SIZE; - prevAckno = 0; - prevWindowUsed = 0; peerWindowSize = DEFAULT_WINDOW_SIZE; } --- 157,162 ---- state = STATE_INITIALIZED; recvWindowUsed = 0; + recvWindowFreed = 0; recvWindowSize = DEFAULT_WINDOW_SIZE; peerWindowSize = DEFAULT_WINDOW_SIZE; } *************** *** 235,247 **** /** - * Returns the size of the used portion of the receive buffer for this - * channel. - */ - public synchronized int getBufferUsed() - { - return recvWindowUsed; - } - - /** * Returns the encoding used on this <code>Channel</code> * @todo look at removing this and adding the information to getProfile() --- 232,235 ---- *************** *** 285,294 **** // in the buffer right now. if (size < recvWindowUsed) { ! throw new BEEPException("Size must be less than what is " + "currently in use."); } - // @TODO what if they decide to shrink the buffer? Is that even - // allowed? // set the new size and copy the buffer recvWindowSize = size; --- 273,280 ---- // in the buffer right now. if (size < recvWindowUsed) { ! throw new BEEPException("New size is less than what is " + "currently in use."); } // set the new size and copy the buffer recvWindowSize = size; *************** *** 299,311 **** } ! // send a new SEQ message to update the buffer size ! if (session.updateMyReceiveBufferSize(this, prevAckno, ! recvSequence, ! prevWindowUsed, ! recvWindowUsed, ! recvWindowSize)) { ! prevAckno = recvSequence; ! prevWindowUsed = recvWindowUsed; ! } } } --- 285,289 ---- } ! sendWindowUpdate(); } } *************** *** 653,666 **** // window is full, this is the last frame. synchronized (m) { ! if (m.isNotified() || ((this.notifyOnFirstFrame == false) ! && (recvSequence - prevAckno) ! != (recvWindowSize - prevWindowUsed) && ! (frame.isLast() == false))) ! { ! if (log.isDebugEnabled()) { ! log.debug("recvWindowUsed = " + recvWindowUsed ! + " recvWindowSize = " + recvWindowSize ! + "\t\r\nNot notifying frame listener."); ! } return; } --- 631,635 ---- // window is full, this is the last frame. synchronized (m) { ! if (m.isNotified()) { return; } *************** *** 749,752 **** --- 718,725 ---- } + if (this.recvWindowFreed != 0) { + sendWindowUpdate(); + } + sendFrames(status); *************** *** 872,875 **** --- 845,860 ---- } + private void sendWindowUpdate() throws BEEPException + { + if (session.updateMyReceiveBufferSize(this, recvSequence, + recvWindowSize - + (recvWindowUsed - + recvWindowFreed))) + { + recvWindowUsed -= recvWindowFreed; + recvWindowFreed = 0; + } + } + /** * Method setState *************** *** 1027,1053 **** synchronized void freeReceiveBufferBytes(int size) { ! try { ! if (log.isTraceEnabled()) { ! log.trace("Freed up " + size + " bytes on channel " + number); ! } ! recvWindowUsed -= size; ! if (log.isTraceEnabled()) { ! log.trace("recvWindowUsed = " + recvWindowUsed); ! } ! if (session.updateMyReceiveBufferSize(this, prevAckno, ! recvSequence, ! prevWindowUsed, ! recvWindowUsed, ! recvWindowSize)) { ! prevAckno = recvSequence; ! prevWindowUsed = recvWindowUsed; ! } ! } catch (BEEPException e) { ! // do nothing ! log.fatal("Error updating receive buffer size", e); } } --- 1012,1035 ---- synchronized void freeReceiveBufferBytes(int size) { ! if (log.isTraceEnabled()) { ! log.trace("Freed up " + size + " bytes on channel " + number); ! } ! recvWindowFreed += size; ! if (log.isTraceEnabled()) { ! log.trace("recvWindowUsed = " + recvWindowUsed + ! " recvWindowFreed = " + recvWindowFreed + ! " recvWindowSize = " + recvWindowSize); ! } ! if (state == ChannelImpl.STATE_ACTIVE) { ! try { ! sendWindowUpdate(); ! } catch (BEEPException e) { ! // do nothing ! log.fatal("Error updating receive buffer size", e); ! } } } Index: TuningProfile.java =================================================================== RCS file: /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core/TuningProfile.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** TuningProfile.java 21 Apr 2003 15:09:10 -0000 1.9 --- TuningProfile.java 27 May 2003 21:37:41 -0000 1.10 *************** *** 105,108 **** --- 105,109 ---- try { tuningChannels.add(channel); + ((ChannelImpl)channel).setState(ChannelImpl.STATE_TUNING); session.sendProfile(profile, data, (ChannelImpl)channel); session.disableIO(); Index: SessionImpl.java =================================================================== RCS file: /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core/SessionImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** SessionImpl.java 20 May 2003 17:10:51 -0000 1.4 --- SessionImpl.java 27 May 2003 21:37:41 -0000 1.5 *************** *** 854,862 **** */ protected abstract boolean updateMyReceiveBufferSize(Channel channel, - long previouslySeq, long currentSeq, ! int previouslyUsed, ! int currentlyUsed, ! int bufferSize) throws BEEPException; --- 854,859 ---- */ protected abstract boolean updateMyReceiveBufferSize(Channel channel, long currentSeq, ! int currentAvail) throws BEEPException; |