You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2010/02/17 23:22:48 UTC
svn commit: r911196 - in /mina/trunk/core/src/main/java/org/apache/mina/core:
polling/AbstractPollingConnectionlessIoAcceptor.java
polling/AbstractPollingIoProcessor.java session/AbstractIoSession.java
Author: elecharny
Date: Wed Feb 17 22:22:48 2010
New Revision: 911196
URL: http://svn.apache.org/viewvc?rev=911196&view=rev
Log:
o Added missing javadoc
o Added some comments
o Renamed some method to make their action more explicit
Modified:
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=911196&r1=911195&r2=911196&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Wed Feb 17 22:22:48 2010
@@ -362,6 +362,9 @@
}
private boolean scheduleFlush(T session) {
+ // Set the schedule for flush flag if the session
+ // has not already be added to the flushingSessions
+ // queue
if (session.setScheduledForFlush(true)) {
flushingSessions.add(session);
return true;
@@ -477,7 +480,9 @@
break;
}
- session.setScheduledForFlush(false);
+ // Reset the Schedule for flush flag for this session,
+ // as we are flushing it now
+ session.unscheduledForFlush();
try {
boolean flushedAll = flush(session, currentTime);
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?rev=911196&r1=911195&r2=911196&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java Wed Feb 17 22:22:48 2010
@@ -428,15 +428,18 @@
* {@inheritDoc}
*/
public final void flush(T session) {
- if (session.setScheduledForFlush(true)) {
+ // add the session to the queue if it's not already
+ // in the queue, then wake up the select()
+ if (session.setScheduledForFlush( true )) {
flushingSessions.add(session);
wakeup();
}
}
private void scheduleFlush(T session) {
+ // add the session to the queue if it's not already
+ // in the queue
if (session.setScheduledForFlush(true)) {
- // add the session to the queue
flushingSessions.add(session);
}
}
@@ -666,9 +669,11 @@
}
// Process writes
- if (isWritable(session) && !session.isWriteSuspended() && session.setScheduledForFlush(true)) {
- // add the session to the queue
- flushingSessions.add(session);
+ if (isWritable(session) && !session.isWriteSuspended()) {
+ // add the session to the queue, if it's not already there
+ if (session.setScheduledForFlush(true)) {
+ flushingSessions.add(session);
+ }
}
}
@@ -758,7 +763,10 @@
break;
}
- session.setScheduledForFlush(false);
+ // Reset the Schedule for flush flag for this session,
+ // as we are flushing it now
+ session.unscheduledForFlush();
+
SessionState state = getState(session);
switch (state) {
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=911196&r1=911195&r2=911196&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Wed Feb 17 22:22:48 2010
@@ -206,22 +206,43 @@
}
/**
- * TODO Add method documentation
+ * Tells if the session is scheduled for flushed
+ * @param true if the session is scheduled for flush
*/
public final boolean isScheduledForFlush() {
return scheduledForFlush.get();
}
/**
- * TODO Add method documentation
+ * Schedule the session for flushed
+ */
+ public final void scheduledForFlush() {
+ scheduledForFlush.set(true);
+ }
+
+ /**
+ * Change the session's status : it's not anymore scheduled for flush
*/
- public final boolean setScheduledForFlush(boolean flag) {
- if (flag) {
- // If the current tag is set to false, switch it to true
- return scheduledForFlush.compareAndSet(false, true);
+ public final void unscheduledForFlush() {
+ scheduledForFlush.set(false);
+ }
+
+ /**
+ * Set the scheduledForFLush flag. As we may have concurrent access
+ * to this flag, we compare and set it in one call.
+ * @param schedule the new value to set if not already set.
+ * @return true if the session flag has been set, and if
+ * it wasn't set already.
+ */
+ public final boolean setScheduledForFlush(boolean schedule) {
+ if (schedule) {
+ // If the current tag is set to false, switch it to true,
+ // otherwise, we do nothing but return false : the session
+ // is already scheduled for flush
+ return scheduledForFlush.compareAndSet(false, schedule);
}
- scheduledForFlush.set(false);
+ scheduledForFlush.set(schedule);
return true;
}