[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;
|