Author: jvermillard Date: Thu Nov 6 07:43:46 2008 New Revision: 711883 URL: http://svn.apache.org/viewvc?rev=711883&view=rev Log: removed TrafficMask and replaced with suspend/resumeRead/Write in IoSession
Removed: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/TrafficMask.java Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilter.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterChain.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoProcessor.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/DummySession.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEvent.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEventType.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoSession.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionImpl.java Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java Thu Nov 6 07:43:46 2008 @@ -526,23 +526,6 @@ } } - public void fireFilterSetTrafficMask(TrafficMask trafficMask) { - Entry tail = this.tail; - callPreviousFilterSetTrafficMask(tail, session, trafficMask); - } - - private void callPreviousFilterSetTrafficMask(Entry entry, - IoSession session, TrafficMask trafficMask) { - try { - IoFilter filter = entry.getFilter(); - NextFilter nextFilter = entry.getNextFilter(); - filter.filterSetTrafficMask(nextFilter, - session, trafficMask); - } catch (Throwable e) { - fireExceptionCaught(e); - } - } - public List<Entry> getAll() { List<Entry> list = new ArrayList<Entry>(); EntryImpl e = head.nextEntry; @@ -646,7 +629,7 @@ } s.getWriteRequestQueue().offer(s, writeRequest); - if (s.getTrafficMask().isWritable()) { + if (!s.isWriteSuspended()) { s.getProcessor().flush(s); } } @@ -655,18 +638,8 @@ @Override public void filterClose(NextFilter nextFilter, IoSession session) throws Exception { - ((AbstractIoSession) session).getProcessor().remove(session); + ((AbstractIoSession) session).getProcessor().remove(((AbstractIoSession) session)); } - - @SuppressWarnings("unchecked") - @Override - public void filterSetTrafficMask(NextFilter nextFilter, - IoSession session, TrafficMask trafficMask) throws Exception { - AbstractIoSession s = (AbstractIoSession) session; - s.setTrafficMaskNow(trafficMask); - s.getProcessor().updateTrafficMask(s); - } - } private static class TailFilter extends IoFilterAdapter { @@ -846,13 +819,6 @@ Entry nextEntry = EntryImpl.this.prevEntry; callPreviousFilterClose(nextEntry, session); } - - public void filterSetTrafficMask(IoSession session, - TrafficMask trafficMask) { - Entry nextEntry = EntryImpl.this.prevEntry; - callPreviousFilterSetTrafficMask(nextEntry, session, - trafficMask); - } public String toString() { return EntryImpl.this.nextEntry.name; Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilter.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilter.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilter.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilter.java Thu Nov 6 07:43:46 2008 @@ -209,12 +209,6 @@ WriteRequest writeRequest) throws Exception; /** - * Filters [EMAIL PROTECTED] IoSession#setTrafficMask(TrafficMask)} method invocation. - */ - void filterSetTrafficMask( - NextFilter nextFilter, IoSession session, TrafficMask trafficMask) throws Exception; - - /** * Represents the next [EMAIL PROTECTED] IoFilter} in [EMAIL PROTECTED] IoFilterChain}. */ public interface NextFilter { @@ -263,9 +257,5 @@ */ void filterClose(IoSession session); - /** - * Forwards <tt>filterSetTrafficMask</tt> event to next filter. - */ - void filterSetTrafficMask(IoSession session, TrafficMask trafficMask); } } Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java Thu Nov 6 07:43:46 2008 @@ -144,14 +144,6 @@ throws Exception { nextFilter.filterClose(session); } - - /** - * [EMAIL PROTECTED] - */ - public void filterSetTrafficMask(NextFilter nextFilter, IoSession session, - TrafficMask trafficMask) throws Exception { - nextFilter.filterSetTrafficMask(session, trafficMask); - } public String toString() { return this.getClass().getSimpleName(); Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterChain.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterChain.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterChain.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterChain.java Thu Nov 6 07:43:46 2008 @@ -281,13 +281,6 @@ public void fireFilterClose(); /** - * Fires a [EMAIL PROTECTED] IoSession#setTrafficMask(TrafficMask)} event. Most users don't need to call this method at - * all. Please use this method only when you implement a new transport or fire a virtual - * event. - */ - public void fireFilterSetTrafficMask(TrafficMask trafficMask); - - /** * Represents a name-filter pair that an [EMAIL PROTECTED] IoFilterChain} contains. * * @author The Apache MINA Project ([EMAIL PROTECTED]) Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java Thu Nov 6 07:43:46 2008 @@ -24,7 +24,6 @@ import org.apache.mina.core.session.IoEvent; import org.apache.mina.core.session.IoEventType; import org.apache.mina.core.session.IoSession; -import org.apache.mina.core.session.TrafficMask; import org.apache.mina.core.write.WriteRequest; /** @@ -65,9 +64,6 @@ case WRITE: getNextFilter().filterWrite(getSession(), (WriteRequest) getParameter()); break; - case SET_TRAFFIC_MASK: - getNextFilter().filterSetTrafficMask(getSession(), (TrafficMask) getParameter()); - break; case CLOSE: getNextFilter().filterClose(getSession()); break; Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Thu Nov 6 07:43:46 2008 @@ -282,7 +282,7 @@ getListeners().fireSessionDestroyed(session); } - public void updateTrafficMask(T session) { + public void updateTrafficControl(T session) { throw new UnsupportedOperationException(); } Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java Thu Nov 6 07:43:46 2008 @@ -20,7 +20,6 @@ package org.apache.mina.core.polling; import java.io.IOException; -import java.nio.channels.SelectionKey; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -38,7 +37,6 @@ import org.apache.mina.core.service.AbstractIoService; import org.apache.mina.core.service.IoProcessor; import org.apache.mina.core.session.AbstractIoSession; -import org.apache.mina.core.session.IdleStatusChecker; import org.apache.mina.core.session.IoSession; import org.apache.mina.core.session.IoSessionConfig; import org.apache.mina.core.write.WriteRequest; @@ -545,11 +543,11 @@ private void process(T session) { - if (isReadable(session) && session.getTrafficMask().isReadable()) { + if (isReadable(session) && !session.isReadSuspended()) { read(session); } - if (isWritable(session) && session.getTrafficMask().isWritable()) { + if (isWritable(session) && !session.isWriteSuspended()) { scheduleFlush(session); } } @@ -819,7 +817,7 @@ SessionState state = state(session); switch (state) { case OPEN: - updateTrafficMaskNow(session); + updateTrafficControl(session); break; case CLOSED: break; @@ -835,12 +833,9 @@ } } - private void updateTrafficMaskNow(T session) { - // The normal is OP_READ and, if there are write requests in the - // session's write queue, set OP_WRITE to trigger flushing. - int mask = session.getTrafficMask().getInterestOps(); - try { - setInterestedInRead(session, (mask & SelectionKey.OP_READ) != 0); + public void updateTrafficControl(T session) { + try { + setInterestedInRead(session, !session.isReadSuspended()); } catch (Exception e) { IoFilterChain filterChain = session.getFilterChain(); filterChain.fireExceptionCaught(e); @@ -849,14 +844,13 @@ setInterestedInWrite( session, !session.getWriteRequestQueue().isEmpty(session) && - (mask & SelectionKey.OP_WRITE) != 0); + !session.isWriteSuspended()); } catch (Exception e) { IoFilterChain filterChain = session.getFilterChain(); filterChain.fireExceptionCaught(e); } } - - + private class Processor implements Runnable { public void run() { int nSessions = 0; Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoProcessor.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoProcessor.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoProcessor.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoProcessor.java Thu Nov 6 07:43:46 2008 @@ -69,10 +69,11 @@ void flush(T session); /** - * Controls the traffic of the specified [EMAIL PROTECTED] session} as specified - * in [EMAIL PROTECTED] IoSession#getTrafficMask()}. + * Controls the traffic of the specified [EMAIL PROTECTED] session} depending of the + * [EMAIL PROTECTED] IoSession#isReadSuspended()} and [EMAIL PROTECTED] IoSession#isWriteSuspended()} + * flags */ - void updateTrafficMask(T session); + void updateTrafficControl(T session); /** * Removes and closes the specified [EMAIL PROTECTED] session} from the I/O Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java Thu Nov 6 07:43:46 2008 @@ -189,8 +189,8 @@ getProcessor(session).remove(session); } - public final void updateTrafficMask(T session) { - getProcessor(session).updateTrafficMask(session); + public final void updateTrafficControl(T session) { + getProcessor(session).updateTrafficControl(session); } public boolean isDisposed() { Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Thu Nov 6 07:43:46 2008 @@ -104,7 +104,10 @@ private final CloseFuture closeFuture = new DefaultCloseFuture(this); private volatile boolean closing; - private volatile TrafficMask trafficMask = TrafficMask.ALL; + + // traffic control + private boolean readSuspended=false; + private boolean writeSuspended=false; // Status variables private final AtomicBoolean scheduledForFlush = new AtomicBoolean(); @@ -550,63 +553,67 @@ new CloseRequestAwareWriteRequestQueue(writeRequestQueue); } - /** - * [EMAIL PROTECTED] - */ - public final TrafficMask getTrafficMask() { - return trafficMask; - } /** * [EMAIL PROTECTED] */ - public final void setTrafficMask(TrafficMask trafficMask) { - if (trafficMask == null) { - throw new NullPointerException("trafficMask"); - } - + public final void suspendRead() { + readSuspended = true; if (isClosing() || !isConnected()) { return; } - - getFilterChain().fireFilterSetTrafficMask(trafficMask); + getProcessor().updateTrafficControl(this); } /** - * TODO Add method documentation + * [EMAIL PROTECTED] */ - public final void setTrafficMaskNow(TrafficMask trafficMask) { - this.trafficMask = trafficMask; + public final void suspendWrite() { + writeSuspended = true; + if (isClosing() || !isConnected()) { + return; + } + getProcessor().updateTrafficControl(this); } /** * [EMAIL PROTECTED] */ - public final void suspendRead() { - setTrafficMask(getTrafficMask().and(TrafficMask.READ.not())); + @SuppressWarnings("unchecked") + public final void resumeRead() { + readSuspended = false; + if (isClosing() || !isConnected()) { + return; + } + getProcessor().updateTrafficControl(this); } /** * [EMAIL PROTECTED] */ - public final void suspendWrite() { - setTrafficMask(getTrafficMask().and(TrafficMask.WRITE.not())); + @SuppressWarnings("unchecked") + public final void resumeWrite() { + writeSuspended = false; + if (isClosing() || !isConnected()) { + return; + } + getProcessor().updateTrafficControl(this); } /** * [EMAIL PROTECTED] */ - public final void resumeRead() { - setTrafficMask(getTrafficMask().or(TrafficMask.READ)); + public boolean isReadSuspended() { + return readSuspended; } /** * [EMAIL PROTECTED] */ - public final void resumeWrite() { - setTrafficMask(getTrafficMask().or(TrafficMask.WRITE)); + public boolean isWriteSuspended() { + return writeSuspended; } - + /** * [EMAIL PROTECTED] */ Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/DummySession.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/DummySession.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/DummySession.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/DummySession.java Thu Nov 6 07:43:46 2008 @@ -78,7 +78,7 @@ }; private final IoFilterChain filterChain = new DefaultIoFilterChain(this); - private final IoProcessor<IoSession> processor; + private final IoProcessor<AbstractIoSession> processor; private volatile IoHandler handler = new IoHandlerAdapter(); private volatile SocketAddress localAddress = ANONYMOUS_ADDRESS; @@ -128,11 +128,11 @@ service = acceptor; - processor = new IoProcessor<IoSession>() { - public void add(IoSession session) { + processor = new IoProcessor<AbstractIoSession>() { + public void add(AbstractIoSession session) { } - public void flush(IoSession session) { + public void flush(AbstractIoSession session) { DummySession s = (DummySession) session; WriteRequest req = s.getWriteRequestQueue().poll(session); Object m = req.getMessage(); @@ -148,10 +148,10 @@ getFilterChain().fireMessageSent(req); } - public void remove(IoSession session) { + public void remove(AbstractIoSession session) { } - public void updateTrafficMask(IoSession session) { + public void updateTrafficControl(AbstractIoSession session) { } public void dispose() { @@ -164,6 +164,7 @@ public boolean isDisposing() { return false; } + }; try { @@ -256,7 +257,7 @@ } @Override - public final IoProcessor<IoSession> getProcessor() { + public final IoProcessor<AbstractIoSession> getProcessor() { return processor; } Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEvent.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEvent.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEvent.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEvent.java Thu Nov 6 07:43:46 2008 @@ -75,9 +75,6 @@ case WRITE: getSession().getFilterChain().fireFilterWrite((WriteRequest) getParameter()); break; - case SET_TRAFFIC_MASK: - getSession().getFilterChain().fireFilterSetTrafficMask((TrafficMask) getParameter()); - break; case CLOSE: getSession().getFilterChain().fireFilterClose(); break; Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEventType.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEventType.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEventType.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoEventType.java Thu Nov 6 07:43:46 2008 @@ -37,5 +37,4 @@ EXCEPTION_CAUGHT, WRITE, CLOSE, - SET_TRAFFIC_MASK, } Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoSession.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoSession.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoSession.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IoSession.java Thu Nov 6 07:43:46 2008 @@ -366,18 +366,6 @@ SocketAddress getServiceAddress(); /** - * Returns the current [EMAIL PROTECTED] TrafficMask} of this session. - */ - TrafficMask getTrafficMask(); - - /** - * Sets the [EMAIL PROTECTED] TrafficMask} of this session which will result - * the parent [EMAIL PROTECTED] IoService} to start to control the traffic - * of this session immediately. - */ - void setTrafficMask(TrafficMask trafficMask); - - /** * * TODO setWriteRequestQueue. * @@ -386,18 +374,38 @@ void setCurrentWriteRequest(WriteRequest currentWriteRequest); /** - * A shortcut method for [EMAIL PROTECTED] #setTrafficMask(TrafficMask)} that - * suspends read operations for this session. + * Suspends read operations for this session. */ void suspendRead(); /** - * A shortcut method for [EMAIL PROTECTED] #setTrafficMask(TrafficMask)} that - * suspends write operations for this session. + * Suspends write operations for this session. */ void suspendWrite(); /** + * Resumes read operations for this session. + */ + void resumeRead(); + + /** + * Resumes write operations for this session. + */ + void resumeWrite(); + + /** + * Is read operation is suspended for this session. + * @return <code>true</code> if suspended + */ + boolean isReadSuspended(); + + /** + * Is write operation is suspended for this session. + * @return <code>true</code> if suspended + */ + boolean isWriteSuspended(); + + /** * Update all statistical properties related with throughput assuming * the specified time is the current time. By default this method returns * silently without updating the throughput properties if they were @@ -411,18 +419,6 @@ void updateThroughput(long currentTime, boolean force); /** - * A shortcut method for [EMAIL PROTECTED] #setTrafficMask(TrafficMask)} that - * resumes read operations for this session. - */ - void resumeRead(); - - /** - * A shortcut method for [EMAIL PROTECTED] #setTrafficMask(TrafficMask)} that - * resumes write operations for this session. - */ - void resumeWrite(); - - /** * Returns the total number of bytes which were read from this session. */ long getReadBytes(); Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java Thu Nov 6 07:43:46 2008 @@ -24,7 +24,6 @@ import org.apache.mina.core.filterchain.IoFilterChain; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; -import org.apache.mina.core.session.TrafficMask; import org.apache.mina.core.write.WriteRequest; /** @@ -128,9 +127,4 @@ throws Exception { filter.sessionOpened(nextFilter, session); } - - public void filterSetTrafficMask(NextFilter nextFilter, IoSession session, - TrafficMask trafficMask) throws Exception { - filter.filterSetTrafficMask(nextFilter, session, trafficMask); - } } Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Thu Nov 6 07:43:46 2008 @@ -37,8 +37,6 @@ import org.apache.mina.core.session.IoSessionInitializer; import org.apache.mina.util.ExceptionMonitor; -import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException; - /** * Connects to [EMAIL PROTECTED] IoHandler}s which is bound on the specified * [EMAIL PROTECTED] VmPipeAddress}. Modified: mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java Thu Nov 6 07:43:46 2008 @@ -87,9 +87,9 @@ Object data = e.getParameter(); if (type == IoEventType.MESSAGE_RECEIVED) { - if (sessionOpened && session.getTrafficMask().isReadable() && session.getLock().tryLock()) { + if (sessionOpened && (! session.isReadSuspended() ) && session.getLock().tryLock()) { try { - if (!session.getTrafficMask().isReadable()) { + if (session.isReadSuspended()) { session.receivedMessageQueue.add(data); } else { super.fireMessageReceived(data); @@ -127,8 +127,8 @@ } private static void flushPendingDataQueues(VmPipeSession s) { - s.getProcessor().updateTrafficMask(s); - s.getRemoteSession().getProcessor().updateTrafficMask(s); + s.getProcessor().updateTrafficControl(s); + s.getRemoteSession().getProcessor().updateTrafficControl(s); } @Override @@ -252,8 +252,8 @@ // Unused } - public void updateTrafficMask(VmPipeSession session) { - if (session.getTrafficMask().isReadable()) { + public void updateTrafficControl(VmPipeSession session) { + if ( ! session.isReadSuspended()) { List<Object> data = new ArrayList<Object>(); session.receivedMessageQueue.drainTo(data); for (Object aData : data) { @@ -261,7 +261,7 @@ } } - if (session.getTrafficMask().isWritable()) { + if ( ! session.isWriteSuspended()) { flush(session); } } Modified: mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java Thu Nov 6 07:43:46 2008 @@ -44,7 +44,8 @@ @Override public void sessionCreated(IoSession session) throws Exception { - session.setTrafficMask(TrafficMask.NONE); + session.suspendRead(); + session.suspendWrite(); } @Override Modified: mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java Thu Nov 6 07:43:46 2008 @@ -26,7 +26,6 @@ import org.apache.mina.core.future.IoFutureListener; import org.apache.mina.core.service.IoConnector; import org.apache.mina.core.session.IoSession; -import org.apache.mina.core.session.TrafficMask; /** * Handles the client to proxy part of the proxied connection. @@ -57,12 +56,15 @@ try { future.getSession().setAttribute(OTHER_IO_SESSION, session); session.setAttribute(OTHER_IO_SESSION, future.getSession()); - future.getSession().setTrafficMask(TrafficMask.ALL); + IoSession session2 = future.getSession(); + session2.resumeRead(); + session2.resumeWrite(); } catch (RuntimeIoException e) { // Connect failed session.close(); } finally { - session.setTrafficMask(TrafficMask.ALL); + session.resumeRead(); + session.resumeWrite(); } } }); Modified: mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionImpl.java URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionImpl.java?rev=711883&r1=711882&r2=711883&view=diff ============================================================================== --- mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionImpl.java (original) +++ mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionImpl.java Thu Nov 6 07:43:46 2008 @@ -277,7 +277,7 @@ serviceListeners.fireSessionDestroyed(SerialSessionImpl.this); } - public void updateTrafficMask(SerialSessionImpl session) { + public void updateTrafficControl(SerialSessionImpl session) { throw new UnsupportedOperationException(); }