costin      02/04/09 13:19:53

  Modified:    jk/java/org/apache/jk/server JkCoyoteHandler.java
  Log:
  Update to the stateless-enabled Input/OutputBuffer interfaces.
  Clean up the code ( jk2 is mostly stateless )
  
  Revision  Changes    Path
  1.6       +42 -58    
jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java
  
  Index: JkCoyoteHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JkCoyoteHandler.java      9 Apr 2002 17:13:51 -0000       1.5
  +++ JkCoyoteHandler.java      9 Apr 2002 20:19:53 -0000       1.6
  @@ -77,7 +77,10 @@
   /** Plugs Jk2 into Coyote
    */
   public class JkCoyoteHandler extends JkHandler implements
  -    ProtocolHandler, ActionHook
  +    ProtocolHandler,
  +    ActionHook,
  +    org.apache.coyote.OutputBuffer,
  +    org.apache.coyote.InputBuffer
   {
       protected static org.apache.commons.logging.Log log 
           = org.apache.commons.logging.LogFactory.getLog(JkCoyoteHandler.class);
  @@ -144,55 +147,45 @@
       public void destroy() {
           //  jkMain.stop();
       }
  +
       // -------------------- OutputBuffer implementation --------------------
   
  -    static class JkCoyoteBuffers implements org.apache.coyote.OutputBuffer,
  -        org.apache.coyote.InputBuffer
  -    {
  -        int epNote;
  -        int headersMsgNote;
  -        int inputStreamNote;
  -        org.apache.coyote.Response res;
           
  -        void setResponse( org.apache.coyote.Response res ) {
  -            this.res=res;
  +    public int doWrite(ByteChunk chunk, Response res) 
  +        throws IOException
  +    {
  +        if (!res.isCommitted()) {
  +            // Send the connector a request for commit. The connector should
  +            // then validate the headers, send them (using sendHeader) and 
  +            // set the filters accordingly.
  +            res.action(ActionCode.ACTION_COMMIT, null);
           }
  +        if( log.isInfoEnabled() )
  +            log.info("doWrite " );
  +        MsgContext ep=(MsgContext)res.getNote( epNote );
           
  -        public int doWrite(ByteChunk chunk) 
  -            throws IOException
  -        {
  -            if (!res.isCommitted()) {
  -                // Send the connector a request for commit. The connector should
  -                // then validate the headers, send them (using sendHeader) and 
  -                // set the filters accordingly.
  -                res.action(ActionCode.ACTION_COMMIT, null);
  -            }
  -            if( log.isInfoEnabled() )
  -                log.info("doWrite " );
  -            MsgContext ep=(MsgContext)res.getNote( epNote );
  -            
  -            MsgAjp msg=(MsgAjp)ep.getNote( headersMsgNote );
  -            msg.reset();
  -            msg.appendByte( HandlerRequest.JK_AJP13_SEND_BODY_CHUNK);
  -            msg.appendBytes( chunk.getBytes(), chunk.getOffset(), chunk.getLength() 
);
  -            ep.getChannel().send( msg, ep );
  -            
  -            return 0;
  -        }
  +        MsgAjp msg=(MsgAjp)ep.getNote( headersMsgNote );
  +        msg.reset();
  +        msg.appendByte( HandlerRequest.JK_AJP13_SEND_BODY_CHUNK);
  +        msg.appendBytes( chunk.getBytes(), chunk.getOffset(), chunk.getLength() );
  +        ep.getChannel().send( msg, ep );
           
  -        public int doRead(ByteChunk chunk) 
  -            throws IOException
  -        {
  -            if( log.isInfoEnabled() )
  -                log.info("doRead " + chunk.getBytes() + " " +  chunk.getOffset() + 
" " + chunk.getLength());
  -            MsgContext ep=(MsgContext)res.getNote( epNote );
  -
  -            JkInputStream jkIS=(JkInputStream)ep.getNote( inputStreamNote );
  -            // return jkIS.read( chunk.getBytes(), chunk.getOffset(), 
chunk.getLength());
  -            return jkIS.doRead( chunk );
  -        }
  +        return 0;
       }
  -
  +    
  +    public int doRead(ByteChunk chunk, Request req) 
  +        throws IOException
  +    {
  +        Response res=req.getResponse();
  +        if( log.isInfoEnabled() )
  +            log.info("doRead " + chunk.getBytes() + " " +  chunk.getOffset() + " " 
+ chunk.getLength());
  +        MsgContext ep=(MsgContext)res.getNote( epNote );
  +        
  +        JkInputStream jkIS=(JkInputStream)ep.getNote( inputStreamNote );
  +        // return jkIS.read( chunk.getBytes(), chunk.getOffset(), 
chunk.getLength());
  +        return jkIS.doRead( chunk );
  +    }
  +    
       // -------------------- Jk handler implementation --------------------
       // Jk Handler mehod
       public int invoke( Msg msg, MsgContext ep ) 
  @@ -203,24 +196,15 @@
           res.setHook( this );
   
           log.info( "Invoke " + req + " " + res + " " + req.requestURI().toString());
  -        JkCoyoteBuffers ob=(JkCoyoteBuffers)res.getNote( obNote );
  -        if( ob == null ) {
  -            // Buffers not initialized yet
  -            // Workaround - IB, OB require state.
  -            ob=new JkCoyoteBuffers();
  -            // Pass the required state.
  -            ob.epNote=epNote;
  -            ob.headersMsgNote=headersMsgNote;
  -            ob.inputStreamNote=inputStreamNote;
  -            ob.setResponse(res);
  -            res.setOutputBuffer( ob );
  -            req.setInputBuffer( ob );
  -            
  +        
  +        res.setOutputBuffer( this );
  +        req.setInputBuffer( this );
  +        
  +        if( ep.getNote( headersMsgNote ) == null ) {
               Msg msg2=new MsgAjp();
               ep.setNote( headersMsgNote, msg );
  -
  -            res.setNote( obNote, ob );
           }
  +        
           res.setNote( epNote, ep );
           
           try {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to