You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by Julien Vermillard <jv...@gmail.com> on 2009/03/09 10:11:48 UTC

Re: svn commit: r751504 - in /mina/trunk/core/src/main/java/org/apache/mina: core/polling/ core/service/ core/session/ core/write/ transport/socket/nio/ transport/vmpipe/

This commit broke Serial transport compilation.
Please don't forget SerialTransport when you are recompiling MINA
(-Dwith-LGPL-dependencies).

Julien

On Sun, Mar 8, 2009 at 8:24 PM,  <el...@apache.org> wrote:
> Author: elecharny
> Date: Sun Mar  8 19:24:58 2009
> New Revision: 751504
>
> URL: http://svn.apache.org/viewvc?rev=751504&view=rev
> Log:
> o Added Javadoc to the WriteRequestQueue interface
> o Rename CloseRequestAwareWriteRequestQueue to CloseAwareWriteQueue
> o Added some comments in code
> o Renamed finishSessionInitialization to initSession
> o Minor refactoring
>
> 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/AbstractPollingIoAcceptor.java
>    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
>    mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
>    mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
>    mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
>    mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
>    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
>    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
>    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.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=751504&r1=751503&r2=751504&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 Sun Mar  8 19:24:58 2009
> @@ -252,7 +252,7 @@
>             session = newSession;
>         }
>
> -        finishSessionInitialization(session, null, null);
> +        initSession(session, null, null);
>
>         try {
>             this.getFilterChainBuilder().buildFilterChain(session.getFilterChain());
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sun Mar  8 19:24:58 2009
> @@ -478,12 +478,15 @@
>                 H handle = handles.next();
>                 handles.remove();
>
> +                // Associates a new created connection to a processor,
> +                // and get back a session
>                 T session = accept(processor, handle);
> +
>                 if (session == null) {
>                     break;
>                 }
>
> -                finishSessionInitialization(session, null, null);
> +                initSession(session, null, null);
>
>                 // add the session to the SocketIoProcessor
>                 session.getProcessor().add(session);
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Sun Mar  8 19:24:58 2009
> @@ -324,7 +324,7 @@
>             if (connect(handle, remoteAddress)) {
>                 ConnectFuture future = new DefaultConnectFuture();
>                 T session = newSession(processor, handle);
> -                finishSessionInitialization(session, future, sessionInitializer);
> +                initSession(session, future, sessionInitializer);
>                 // Forward the remaining process to the IoProcessor.
>                 session.getProcessor().add(session);
>                 success = true;
> @@ -432,7 +432,7 @@
>             try {
>                 if (finishConnect(handle)) {
>                     T session = newSession(processor, handle);
> -                    finishSessionInitialization(session, connectionRequest, connectionRequest.getSessionInitializer());
> +                    initSession(session, connectionRequest, connectionRequest.getSessionInitializer());
>                     // Forward the remaining process to the IoProcessor.
>                     session.getProcessor().add(session);
>                     nHandles ++;
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Sun Mar  8 19:24:58 2009
> @@ -437,12 +437,13 @@
>
>     // TODO Figure out make it work without causing a compiler error / warning.
>     @SuppressWarnings("unchecked")
> -    protected final void finishSessionInitialization(IoSession session,
> +    protected final void initSession(IoSession session,
>             IoFuture future, IoSessionInitializer sessionInitializer) {
>         // Update lastIoTime if needed.
>         if (stats.getLastReadTime() == 0) {
>             ((IoServiceStatistics)stats).setLastReadTime(getActivationTime());
>         }
> +
>         if (stats.getLastWriteTime() == 0) {
>             ((IoServiceStatistics)stats).setLastWriteTime(getActivationTime());
>         }
> @@ -472,7 +473,7 @@
>                     "Failed to initialize a writeRequestQueue.", e);
>         }
>
> -        if (future != null && future instanceof ConnectFuture) {
> +        if ((future != null) && (future instanceof ConnectFuture)) {
>             // DefaultIoFilterChain will notify the future. (We support ConnectFuture only for now).
>             session.setAttribute(DefaultIoFilterChain.SESSION_CREATED_FUTURE,
>                     future);
>
> 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=751504&r1=751503&r2=751504&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 Sun Mar  8 19:24:58 2009
> @@ -553,11 +553,13 @@
>     }
>
>     /**
> -     * TODO Add method documentation
> +     * Create a new close aware write queue, based on the given write queue.
> +     *
> +     * @param writeRequestQueue The write request queue
>      */
>     public final void setWriteRequestQueue(WriteRequestQueue writeRequestQueue) {
>         this.writeRequestQueue =
> -            new CloseRequestAwareWriteRequestQueue(writeRequestQueue);
> +            new CloseAwareWriteQueue(writeRequestQueue);
>     }
>
>
> @@ -1244,38 +1246,61 @@
>
>
>     /**
> -     * TODO Add method documentation. Name is ridiculously too long.
> +     * A queue which handles the CLOSE request.
> +     *
> +     * TODO : Check that when closing a session, all the pending
> +     * requests are correctly sent.
>      */
> -    private class CloseRequestAwareWriteRequestQueue implements WriteRequestQueue {
> +    private class CloseAwareWriteQueue implements WriteRequestQueue {
>
>         private final WriteRequestQueue q;
>
> -        public CloseRequestAwareWriteRequestQueue(WriteRequestQueue q) {
> +        /**
> +         * {@inheritDoc}
> +         */
> +        public CloseAwareWriteQueue(WriteRequestQueue q) {
>             this.q = q;
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public synchronized WriteRequest poll(IoSession session) {
>             WriteRequest answer = q.poll(session);
> +
>             if (answer == CLOSE_REQUEST) {
>                 AbstractIoSession.this.close();
>                 dispose(session);
>                 answer = null;
>             }
> +
>             return answer;
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public void offer(IoSession session, WriteRequest e) {
>             q.offer(session, e);
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public boolean isEmpty(IoSession session) {
>             return q.isEmpty(session);
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public void clear(IoSession session) {
>             q.clear(session);
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public void dispose(IoSession session) {
>             q.dispose(session);
>         }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Sun Mar  8 19:24:58 2009
> @@ -159,24 +159,39 @@
>     }
>
>     private static class DefaultWriteRequestQueue implements WriteRequestQueue {
> -
> +        /** A queue to store incoming write requests */
>         private final Queue<WriteRequest> q = new CircularQueue<WriteRequest>(16);
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public void dispose(IoSession session) {
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public void clear(IoSession session) {
>             q.clear();
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public synchronized boolean isEmpty(IoSession session) {
>             return q.isEmpty();
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public synchronized void offer(IoSession session, WriteRequest writeRequest) {
>             q.offer(writeRequest);
>         }
>
> +        /**
> +         * {@inheritDoc}
> +         */
>         public synchronized WriteRequest poll(IoSession session) {
>             return q.poll();
>         }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java Sun Mar  8 19:24:58 2009
> @@ -30,14 +30,37 @@
>  */
>  public interface WriteRequestQueue {
>
> +    /**
> +     * Get the first request available in the queue for a session.
> +     * @param session The session
> +     * @return The first available request, if any.
> +     */
>     WriteRequest poll(IoSession session);
> +
> +    /**
> +     * Add a new WriteRequest to the session write's queue
> +     * @param session The session
> +     * @param writeRequest The writeRequest to add
> +     */
>     void offer(IoSession session, WriteRequest writeRequest);
> +
> +    /**
> +     * Tells if the WriteRequest queue is empty or not for a session
> +     * @param session The session to check
> +     * @return <code>true</code> if the writeRequest is empty
> +     */
>     boolean isEmpty(IoSession session);
> +
> +    /**
> +     * Removes all the requests from this session's queue.
> +     * @param session The associated session
> +     */
>     void clear(IoSession session);
>
>     /**
>      * Disposes any releases associated with the specified session.
>      * This method is invoked on disconnection.
> +     * @param session The associated session
>      */
>     void dispose(IoSession session);
>  }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java Sun Mar  8 19:24:58 2009
> @@ -216,6 +216,7 @@
>
>         // accept the connection from the client
>         SocketChannel ch = handle.accept();
> +
>         if (ch == null) {
>             return null;
>         }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Sun Mar  8 19:24:58 2009
> @@ -162,6 +162,6 @@
>     }
>
>     void doFinishSessionInitialization(IoSession session, IoFuture future) {
> -        finishSessionInitialization(session, future, null);
> +        initSession(session, future, null);
>     }
>  }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Sun Mar  8 19:24:58 2009
> @@ -99,7 +99,7 @@
>         VmPipeSession localSession = new VmPipeSession(this,
>                 getListeners(), actualLocalAddress, getHandler(), entry);
>
> -        finishSessionInitialization(localSession, future, sessionInitializer);
> +        initSession(localSession, future, sessionInitializer);
>
>         // and reclaim the local address when the connection is closed.
>         localSession.getCloseFuture().addListener(LOCAL_ADDRESS_RECLAIMER);
>
>
>