package org.apache.phoenix.engine;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import org.apache.avalon.AbstractLoggable;

/**
 * UGLY HACK
 *
 * @author <a href="mailto:colus@isoft.co.kr">Eung-ju Park</a>
 */
public class Ear
    extends AbstractLoggable
    implements Runnable
{

    /** number 4 means DEATH in Korea :-) */
    private static final int PORT = 4444;

    private ServerKernel m_kernel;

    public Ear( final ServerKernel kernel )
    {
        m_kernel = kernel;
    }

    public void run()
    {
        Socket socket = null;
        try
        {
            final ServerSocket serverSocket = new ServerSocket( PORT );
            socket = serverSocket.accept();
            m_kernel.stop();
        }
        catch ( final Exception e )
        {
            getLogger().error( "ERROR!!!", e );
        }
        finally
        {
            try
            {
                socket.close();
            }
            catch ( final IOException igonre )
            {
                //ignored
            }
        }
    }

    public static class Stopper
    {
        public static void main( final String[] args )
        {
            Socket socket = null;
            try
            {
                socket = new Socket( "127.0.0.1", PORT );
            }
            catch ( final Exception e )
            {
                System.err.println( "Unable to stop" );
            }
        }
    }

}
