costin 02/02/06 09:36:07 Modified: jk/java/org/apache/jk/core WorkerEnv.java Log: Moved the process() logic in the HandlerDispatch, it doesn't have to be hardcoded. Added a 'home' property. Added 'notes' for the workerenv ( for generic properties stored by handlers ) Removed the channel, consolidate Handler as the main 'plugin' mechanism. Revision Changes Path 1.4 +35 -76 jakarta-tomcat-connectors/jk/java/org/apache/jk/core/WorkerEnv.java Index: WorkerEnv.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/core/WorkerEnv.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WorkerEnv.java 26 Jan 2002 07:22:23 -0000 1.3 +++ WorkerEnv.java 6 Feb 2002 17:36:07 -0000 1.4 @@ -79,26 +79,19 @@ Hashtable properties; - Webapp webapps[]=new Webapp[20]; + Object webapps[]=new Object[20]; int webappCnt=0; public static final int ENDPOINT_NOTE=0; public static final int REQUEST_NOTE=1; int noteId[]=new int[4]; String noteName[][]=new String[4][]; + private Object notes[]=new Object[32]; - static final int MAX_HANDLERS=32; - static final int RESERVED=16; // reserved names, backward compat - - // Note that we don't make distinction between in and out - // messages ( i.e. one id is used only in one direction ) - Handler handlers[]=new Handler[MAX_HANDLERS]; - String handlerNames[]=new String[MAX_HANDLERS]; - int currentId=RESERVED; - - Hashtable workers=new Hashtable(); - Hashtable channels=new Hashtable(); - + Hashtable handlersMap=new Hashtable(); + // base dir for the jk webapp + String home; + public WorkerEnv() { for( int i=0; i<noteId.length; i++ ) { noteId[i]=7; @@ -106,9 +99,9 @@ } } - public int addWebapp( Webapp wa ) { + public int addWebapp( Object wa ) { if( webappCnt >= webapps.length ) { - Webapp newWebapps[]=new Webapp[ webapps.length + 20 ]; + Object newWebapps[]=new Object[ webapps.length + 20 ]; System.arraycopy( webapps, 0, newWebapps, 0, webapps.length); webapps=newWebapps; } @@ -116,94 +109,60 @@ return webappCnt++; } - public Webapp getWebapp( int i ) { + public void setJkHome( String s ) { + home=s; + } + + public String getJkHome() { + return home; + } + + public Object getWebapp( int i ) { return webapps[i]; } public int getWebappCount() { return webappCnt; } + + public final Object getNote(int i ) { + return notes[i]; + } - public void addHandler( Handler h ) { - h.setWorkerEnv( this ); - h.init(); + public final void setNote(int i, Object o ) { + notes[i]=o; } public int getNoteId( int type, String name ) { + for( int i=0; i<noteId[type]; i++ ) { + if( name.equals( noteName[type][i] )) + return i; + } int id=noteId[type]++; noteName[type][id]=name; return id; } - public int registerMessageType( int id, String name, Handler h, - String sig[] ) - { - if( id < 0 ) { - // try to find it by name - for( int i=0; i< handlerNames.length; i++ ) - if( name.equals( handlerNames[i] ) ) return i; - handlerNames[currentId]=name; - handlers[currentId]=h; - currentId++; - return currentId; - } - // fixed id - handlerNames[id]=name; - handlers[id]=h; - return id; - } - - public int processCallbacks( Channel ch, Endpoint ep, Msg hBuf ) - throws IOException - { - int type=hBuf.getByte(); - - if( type > handlers.length || - handlers[type]==null ) { - d( "Invalid handler " + type ); - return 500; - } - - if( dL > 0 ) - d( "Received " + type + " " + handlerNames[type]); - - Handler handler=handlers[type]; - - return handler.callback( type, ch, ep, hBuf ); - } - - public void addWorker( String name, Worker w ) { + public void addHandler( String name, JkHandler w ) { w.setWorkerEnv( this ); - workers.put( name, w ); - } - - public Worker getWorker( String name ) { - return (Worker)workers.get(name); + w.setName( name ); + handlersMap.put( name, w ); } - public void addChannel( String name, Channel c ) { - c.setWorkerEnv( this ); - channels.put( name, c ); + public JkHandler getHandler( String name ) { + return (JkHandler)handlersMap.get(name); } public void start() throws IOException { - Enumeration en=workers.keys(); + Enumeration en=handlersMap.keys(); while( en.hasMoreElements() ) { String n=(String)en.nextElement(); - Worker w=(Worker)workers.get(n); + JkHandler w=(JkHandler)handlersMap.get(n); w.init(); } - - en=channels.keys(); - while( en.hasMoreElements() ) { - String n=(String)en.nextElement(); - Channel ch=(Channel)channels.get(n); - ch.init(); - } } - - private static final int dL=10; + private static final int dL=0; private static void d(String s ) { System.err.println( "WorkerEnv: " + s ); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>