
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_rmi_server_ConnectionRunnerPool$ConnectionRunner__
#define __gnu_java_rmi_server_ConnectionRunnerPool$ConnectionRunner__

#pragma interface

#include <java/lang/Thread.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace rmi
      {
        namespace server
        {
            class ConnectionRunnerPool$ConnectionRunner;
            class UnicastConnection;
        }
      }
    }
  }
}

class gnu::java::rmi::server::ConnectionRunnerPool$ConnectionRunner : public ::java::lang::Thread
{

public:
  ConnectionRunnerPool$ConnectionRunner(::java::lang::ThreadGroup *, ::java::lang::String *);
  virtual void run();
  virtual void dispatch(::gnu::java::rmi::server::UnicastConnection *);
public: // actually package-private
  virtual void exit();
private:
  ::gnu::java::rmi::server::UnicastConnection * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) conn;
  jboolean volatile exiting;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_rmi_server_ConnectionRunnerPool$ConnectionRunner__
