I compile cornerstone in current CVS. error occured cannot resolve symbol symbol: method isDebugEnabled() plz update logkit in cvs. Good Luck. ----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, March 30, 2001 1:08 PM Subject: cvs commit: jakarta-avalon-cornerstone/src/manifest cornerstone.mf > donaldp 01/03/29 20:08:03 > > Modified: src/conf avalon-demo-assembly.xml > src/manifest cornerstone.mf > Added: src/java/org/apache/cornerstone/blocks/packet Acceptor.java > DefaultPacketManager.java > DefaultPacketManager.xinfo > src/java/org/apache/cornerstone/services/packet > PacketHandler.java PacketHandlerFactory.java > PacketManager.java > Log: > Created a basic packet handler. > > Acts like a conneciton handler but instead is associated with Datagram packets/sockets. > > Revision Changes Path > 1.4 +5 -1 jakarta-avalon-cornerstone/src/conf/avalon-demo-assembly.xml > > Index: avalon-demo-assembly.xml > =================================================================== > RCS file: /home/cvs/jakarta-avalon-cornerstone/src/conf/avalon-demo-assembly.xml,v > retrieving revision 1.3 > retrieving revision 1.4 > diff -u -r1.3 -r1.4 > --- avalon-demo-assembly.xml 2001/03/16 13:16:43 1.3 > +++ avalon-demo-assembly.xml 2001/03/30 04:08:02 1.4 > @@ -42,7 +42,11 @@ > </repositories> > </configuration> > </block> > - > + > + <!-- The Packet Manager block --> > + <block class="org.apache.cornerstone.blocks.packet.DefaultPacketManager" > + name="packet-manager" /> > + > <!-- The Connection Manager block --> > <block class="org.apache.cornerstone.blocks.connection.DefaultConnectionManager" > name="connections" /> > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/packet/Acc eptor.java > > Index: Acceptor.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software License > * version 1.1, a copy of which has been included with this distribution in > * the LICENSE file. > */ > package org.apache.cornerstone.blocks.packet; > > import java.io.IOException; > import java.net.DatagramSocket; > import java.net.DatagramPacket; > import java.util.ArrayList; > import java.util.Iterator; > import org.apache.avalon.AbstractLoggable; > import org.apache.avalon.Component; > import org.apache.avalon.util.thread.ThreadPool; > import org.apache.cornerstone.services.packet.PacketHandler; > import org.apache.cornerstone.services.packet.PacketHandlerFactory; > > /** > * Support class for the DefaultPacketManager. > * This manages an individual DatagramSocket. > * > * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> > */ > class Acceptor > extends AbstractLoggable > implements Component, Runnable > { > protected final DatagramSocket m_datagramSocket; > protected final PacketHandlerFactory m_handlerFactory; > protected final ThreadPool m_threadPool; > protected final ArrayList m_runners = new ArrayList(); > > protected Thread m_thread; > > public Acceptor( final DatagramSocket datagramSocket, > final PacketHandlerFactory handlerFactory, > final ThreadPool threadPool ) > { > m_datagramSocket = datagramSocket; > m_handlerFactory = handlerFactory; > m_threadPool = threadPool; > } > > public void dispose() > throws Exception > { > if( null != m_thread ) > { > m_thread.interrupt(); > m_thread.join( /* 1000 ??? */ ); > m_thread = null; > } > > final Iterator runners = m_runners.iterator(); > while( runners.hasNext() ) > { > final PacketHandlerRunner runner = (PacketHandlerRunner)runners.next(); > runner.dispose(); > } > > m_runners.clear(); > } > > public void run() > { > m_thread = Thread.currentThread(); > DatagramPacket packet = null; > > try > { > final int size = m_datagramSocket.getReceiveBufferSize(); > final byte[] buffer = new byte[ size ]; > packet = new DatagramPacket( buffer, size ); > } > catch( final IOException ioe ) > { > getLogger().error( "Failed to get receive buffer size for datagram socket", > ioe ); > } > > while( !Thread.interrupted() ) > { > try > { > m_datagramSocket.receive( packet ); > final PacketHandler handler = m_handlerFactory.createPacketHandler(); > final PacketHandlerRunner runner = > new PacketHandlerRunner( packet, m_runners, handler ); > setupLogger( runner ); > m_threadPool.execute( runner ); > } > catch( final IOException ioe ) > { > getLogger().error( "Exception accepting connection", ioe ); > } > catch( final Exception e ) > { > getLogger().error( "Exception executing runner", e ); > } > } > } > } > > class PacketHandlerRunner > extends AbstractLoggable > implements Runnable, Component > { > protected DatagramPacket m_packet; > protected Thread m_thread; > protected ArrayList m_runners; > protected PacketHandler m_handler; > > PacketHandlerRunner( final DatagramPacket packet, > final ArrayList runners, > final PacketHandler handler ) > { > m_packet = packet; > m_runners = runners; > m_handler = handler; > } > > public void dispose() > throws Exception > { > if( null != m_thread ) > { > m_thread.interrupt(); > m_thread.join( /* 1000 ??? */ ); > m_thread = null; > } > } > > public void run() > { > try > { > m_thread = Thread.currentThread(); > m_runners.add( this ); > > if( getLogger().isDebugEnabled() ) > { > getLogger().debug( "Starting connection on " + m_packet ); > } > > setupLogger( m_handler ); > m_handler.handlePacket( m_packet ); > > if( getLogger().isDebugEnabled() ) > { > getLogger().debug( "Ending connection on " + m_packet ); > } > } > catch( final Exception e ) > { > getLogger().warn( "Error handling packet", e ); > } > finally > { > m_runners.remove( this ); > } > } > } > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/packet/Def aultPacketManager.java > > Index: DefaultPacketManager.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software License > * version 1.1, a copy of which has been included with this distribution in > * the LICENSE file. > */ > package org.apache.cornerstone.blocks.packet; > > import java.io.IOException; > import java.net.DatagramSocket; > import java.util.HashMap; > import java.util.Iterator; > import org.apache.avalon.AbstractLoggable; > import org.apache.avalon.Context; > import org.apache.avalon.Contextualizable; > import org.apache.avalon.Disposable; > import org.apache.avalon.util.thread.ThreadPool; > import org.apache.cornerstone.services.packet.PacketHandler; > import org.apache.cornerstone.services.packet.PacketHandlerFactory; > import org.apache.cornerstone.services.packet.PacketManager; > import org.apache.phoenix.Block; > import org.apache.phoenix.BlockContext; > > /** > * This is the service through which PacketManagement occurs. > * > * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> > */ > public class DefaultPacketManager > extends AbstractLoggable > implements Block, PacketManager, Contextualizable, Disposable > { > protected BlockContext m_context; > protected HashMap m_acceptors = new HashMap(); > > public void contextualize( final Context context ) > { > m_context = (BlockContext)context; > } > > public void dispose() > throws Exception > { > final Iterator names = ((HashMap)m_acceptors.clone()).keySet().iterator(); > while( names.hasNext() ) > { > final String name = (String)names.next(); > disconnect( name ); > } > } > > /** > * Start managing a DatagramSocket. > * Management involves accepting packets and farming them out to threads > * from pool to be handled. > * > * @param name the name of acceptor > * @param socket the DatagramSocket from which to > * @param handlerFactory the factory from which to aquire handlers > * @param threadPool the thread pool to use > * @exception Exception if an error occurs > */ > public synchronized void connect( final String name, > final DatagramSocket socket, > final PacketHandlerFactory handlerFactory, > final ThreadPool threadPool ) > throws Exception > { > if( null != m_acceptors.get( name ) ) > { > throw new IllegalArgumentException( "Acceptor already exists with name " + > name ); > } > > final Acceptor acceptor = new Acceptor( socket, handlerFactory, threadPool ); > setupLogger( acceptor ); > m_acceptors.put( name, acceptor ); > threadPool.execute( acceptor ); > } > > /** > * Start managing a DatagramSocket. > * This is similar to other connect method except that it uses default thread pool. > * > * @param name the name of DatagramSocket > * @param socket the DatagramSocket from which to > * @param handlerFactory the factory from which to aquire handlers > * @exception Exception if an error occurs > */ > public synchronized void connect( final String name, > final DatagramSocket socket, > final PacketHandlerFactory handlerFactory ) > throws Exception > { > connect( name, socket, handlerFactory, m_context.getDefaultThreadPool() ); > } > > /** > * This shuts down all handlers and socket, waiting for each to gracefully shutdown. > * > * @param name the name of packet > * @exception Exception if an error occurs > */ > public synchronized void disconnect( final String name ) > throws Exception > { > disconnect( name, false ); > } > > /** > * This shuts down all handlers and socket. > * If tearDown is true then it will forcefully shutdown all acceptors and try > * to return as soon as possible. Otherwise it will behave the same as > * void disconnect( String name ); > * > * @param name the name of acceptor > * @param tearDown if true will forcefully tear down all handlers > * @exception Exception if an error occurs > */ > public synchronized void disconnect( final String name, final boolean tearDown ) > throws Exception > { > final Acceptor acceptor = (Acceptor)m_acceptors.remove( name ); > if( null == acceptor ) > { > throw new IllegalArgumentException( "No such acceptor with name " + > name ); > } > > file://TODO: Stop ignoring tearDown > acceptor.dispose(); > } > } > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/packet/Def aultPacketManager.xinfo > > Index: DefaultPacketManager.xinfo > =================================================================== > <?xml version="1.0"?> > > <blockinfo> > > <meta> > > <contributors> > <author name="Peter Donald" email="[EMAIL PROTECTED]"/> > </contributors> > > </meta> > > <!-- services that are offered by this block --> > <services> > <service name="org.apache.cornerstone.services.packet.PacketManager" version="1.0" /> > </services> > > </blockinfo> > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/packet/P acketHandler.java > > Index: PacketHandler.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software License > * version 1.1, a copy of which has been included with this distribution in > * the LICENSE file. > */ > package org.apache.cornerstone.services.packet; > > import java.io.IOException; > import java.net.DatagramPacket; > import java.net.ProtocolException; > import org.apache.avalon.Component; > > /** > * This interface is the way in which handlers are created. > * > * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> > */ > public interface PacketHandler > extends Component > { > /** > * Handle a datgram packet. > * This handler is responsible for processing packets as they occur. > * > * @param packet the packet > * @exception IOException if an error reading from socket occurs > * @exception ProtocolException if an error handling connection occurs > */ > void handlePacket( DatagramPacket packet ) > throws IOException, ProtocolException; > } > > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/packet/P acketHandlerFactory.java > > Index: PacketHandlerFactory.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software License > * version 1.1, a copy of which has been included with this distribution in > * the LICENSE file. > */ > package org.apache.cornerstone.services.packet; > > /** > * This interface is the way in which handlers are created. > * > * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> > */ > public interface PacketHandlerFactory > { > /** > * Construct an appropriate PacketHandler. > * > * @return the new PacketHandler > * @exception Exception if an error occurs > */ > PacketHandler createPacketHandler() > throws Exception; > } > > > > > 1.1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/packet/P acketManager.java > > Index: PacketManager.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software License > * version 1.1, a copy of which has been included with this distribution in > * the LICENSE file. > */ > package org.apache.cornerstone.services.packet; > > import java.net.DatagramSocket; > import org.apache.avalon.util.thread.ThreadPool; > import org.apache.phoenix.Service; > > /** > * This is the service through which Datagram ConnectionManagement occurs. > * > * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> > */ > public interface PacketManager > extends Service > { > /** > * Start managing a connection. > * Management involves accepting connections and farming them out to threads > * from pool to be handled. > * > * @param name the name of connection > * @param socket the ServerSocket from which to > * @param handlerFactory the factory from which to aquire handlers > * @param threadPool the thread pool to use > * @exception Exception if an error occurs > */ > void connect( String name, > DatagramSocket socket, > PacketHandlerFactory handlerFactory, > ThreadPool threadPool ) > throws Exception; > > /** > * Start managing a connection. > * This is similar to other connect method except that it uses default thread pool. > * > * @param name the name of connection > * @param socket the DatagramSocket from which to aquire packets > * @param handlerFactory the factory from which to aquire handlers > * @exception Exception if an error occurs > */ > void connect( String name, > DatagramSocket socket, > PacketHandlerFactory handlerFactory ) > throws Exception; > > /** > * This shuts down all handlers and socket, waiting for each to gracefully shutdown. > * > * @param name the name of connection > * @exception Exception if an error occurs > */ > void disconnect( String name ) > throws Exception; > > /** > * This shuts down all handlers and socket. > * If tearDown is true then it will forcefully shutdown all connections and try > * to return as soon as possible. Otherwise it will behave the same as > * void disconnect( String name ); > * > * @param name the name of connection > * @param tearDown if true will forcefully tear down all handlers > * @exception Exception if an error occurs > */ > void disconnect( String name, boolean tearDown ) > throws Exception; > } > > > > 1.4 +4 -1 jakarta-avalon-cornerstone/src/manifest/cornerstone.mf > > Index: cornerstone.mf > =================================================================== > RCS file: /home/cvs/jakarta-avalon-cornerstone/src/manifest/cornerstone.mf,v > retrieving revision 1.3 > retrieving revision 1.4 > diff -u -r1.3 -r1.4 > --- cornerstone.mf 2001/03/13 04:52:01 1.3 > +++ cornerstone.mf 2001/03/30 04:08:03 1.4 > @@ -1,5 +1,5 @@ > Manifest-Version: 1.0 > -Created-By: Apache Avalon Project > +Created-By: Jakarta Apache Avalon/Phoenix Project > > Name: org/apache/cornerstone/blocks/masterstore/RepositoryManager.class > Avalon-Block: true > @@ -11,4 +11,7 @@ > Avalon-Block: true > > Name: org/apache/cornerstone/blocks/connection/DefaultConnectionManager.class > +Avalon-Block: true > + > +Name: org/apache/cornerstone/blocks/packet/DefaultPacketManager.class > Avalon-Block: true > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]