CVS: beepcore-java/src/org/beepcore/beep/core ChannelImpl.java,1.3,1.4 TuningProfile.java,1.9,1.10 SessionImpl.java,1.4,1.5
Huston Franklin <[email protected]> Tue, 27 May 2003 14:37:45 -0700
| Newsgroups | gmane.network.beep.beepcore.java.cvs |
|---|---|
| Message-ID | <[email protected]> |
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;
-------------------------------------------------------
This SF.net email is sponsored by: ObjectStore.
If flattening out C++ or Java code to make your application fit in a
relational database is painful, don't do it! Check out ObjectStore.
Now part of Progress Software. http://www.objectstore.net/sourceforge