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

#ifndef __gnu_CORBA_OrbFunctional$2__
#define __gnu_CORBA_OrbFunctional$2__

#pragma interface

#include <java/lang/Thread.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class OrbFunctional;
        class OrbFunctional$2;
        class OrbFunctional$portServer;
    }
  }
  namespace java
  {
    namespace net
    {
        class Socket;
    }
  }
}

class gnu::CORBA::OrbFunctional$2 : public ::java::lang::Thread
{

public: // actually package-private
  OrbFunctional$2(::gnu::CORBA::OrbFunctional *, ::gnu::CORBA::OrbFunctional$portServer *, ::java::net::Socket *);
public:
  void run();
public: // actually package-private
  ::gnu::CORBA::OrbFunctional * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) this$0;
private:
  ::gnu::CORBA::OrbFunctional$portServer * val$p;
  ::java::net::Socket * val$service;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_OrbFunctional$2__
