costin 2003/01/10 22:53:43 Added: util/java/org/apache/tomcat/util/threads ThreadWithAttributes.java Log: Moved ThreadWithAttribute out of ThreadPool. All attribute operations are guarded by ThreadPool - if an application has a reference to ThreadPool, it can get/set attributes. The cost is one cast and a method access. Revision Changes Path 1.1 jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/threads/ThreadWithAttributes.java Index: ThreadWithAttributes.java =================================================================== package org.apache.tomcat.util.threads; import java.util.Hashtable; /** Special thread that allows storing of attributes and notes. * A guard is used to prevent untrusted code from accessing the * attributes. * * This avoids hash lookups and provide something very similar * with ThreadLocal ( but compatible with JDK1.1 and faster on * JDK < 1.4 ). * * The main use is to store 'state' for monitoring ( like "processing * request 'GET /' "). */ public class ThreadWithAttributes extends Thread { private Object control; public static int MAX_NOTES=16; private Object notes[]=new Object[MAX_NOTES]; private Hashtable attributes=new Hashtable(); private String currentStage; private Object param; public ThreadWithAttributes(Object control, Runnable r) { super(r); this.control=control; } /** Notes - for attributes that need fast access ( array ) * The application is responsible for id management */ public final void setNote( Object control, int id, Object value ) { if( this.control != control ) return; notes[id]=value; } /** Information about the curent performed operation */ public final String getCurrentStage(Object control) { if( this.control != control ) return null; return currentStage; } /** Information about the current request ( or the main object * we are processing ) */ public final Object getParam(Object control) { if( this.control != control ) return null; return param; } public final void setCurrentStage(Object control, String currentStage) { if( this.control != control ) return; this.currentStage = currentStage; } public final void setParam( Object control, Object param ) { if( this.control != control ) return; this.param=param; } public final Object getNote(Object control, int id ) { if( this.control != control ) return null; return notes[id]; } /** Generic attributes. You'll need a hashtable lookup - * you can use notes for array access. */ public final Hashtable getAttributes(Object control) { return attributes; } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>