Re: Filters - Exit

At 09.58 16/07/96 +0500, you wrote:
>I am not sure I undertsand your problem. Yes, ingoing and outgoing are
>meant to be used together. However if you consume a stream at one
>point without replacing it (by using setStream), then whoever else
>wants to access the stream will get into troubles. Do you have any
>more details ?

OK, sorry. I don't understand becouse, but at this time the filter work fine.
Maybe are cache problems.
Following the code (base code from your sample)

package pdf.jigsaw.filters;

import w3c.jigsaw.http.*;
import w3c.jigsaw.resources.*;

import java.io.*;
import java.lang.*;

public class CountFilter extends ResourceFilter {

    /**
     * Attribute index - The counter attribute.
     */
    protected static int ATTR_COUNTER = -1 ;
    protected static int ATTR_FILE    = -1 ;

    static {
        Attribute a   = null ;
        Class     cls = null ;

        try {
            cls = Class.forName("pdf.jigsaw.filters.CountFilter") ;
        } catch (Exception ex) {
            ex.printStackTrace() ;
            System.exit(1) ;
        }
        // Declare the counter attribute
        a = new IntegerAttribute("counter" , new Integer(0) ,
Attribute.EDITABLE) ;
        ATTR_COUNTER = AttributeRegistery.registerAttribute(cls, a) ;

        a = new StringAttribute("file", "", Attribute.EDITABLE) ;
        ATTR_FILE    = AttributeRegistery.registerAttribute(cls, a) ;

    }

    /**
     * We count all accesses, even the one that failed.
     * @param request The request being processed.
     */
    public synchronized int ingoingFilter(Request request) {
        System.out.println("Valore del counter = " + getInt(ATTR_COUNTER, 0));

        int i = getInt (ATTR_COUNTER, 0) ;
        setInt(ATTR_COUNTER, i+1) ;

        return CallOutgoing  ;
    }

    /**
     * Take the input stream, dump on the console and re-create a new stream
for reply.
     */
    public Reply outgoingFilter(Request request, Reply reply) throws
HTTPException
    {

    	InputStream in = reply.openStream() ;
    	if ( in == null )
    	{
    	    System.out.println("InputStream == null");
    	    return reply ;
        }

        DataInputStream ds = new DataInputStream(in);
        if (ds == null)
        {
            System.out.println("DataInputStream == null");
            return reply;
        }

        String       strTmp;
        StringBuffer buffer = new StringBuffer();

        try
        {
            while ( (strTmp = ds.readLine()) != null)
            {
                System.out.println(strTmp);
                buffer.append(strTmp);
            }
        }
        catch (IOException e)
        {

        }

        String strOut = buffer.toString();

        StringBufferInputStream strIS = new StringBufferInputStream(strOut);

        reply.setStream(strIS);

        return reply;
    }

}

>
> > Why the w3c.jigsaw.status.ExitStat kill only httpd and not the entire
> > application??
>
>It's the idea, yes. Basically you should be able to think of Jigsaw as
>a library too.
>
>Anselm.

It's right kill the process with ^C ??

Pasquale

Received on Tuesday, 16 July 1996 11:23:03 UTC