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

#ifndef __gnu_java_rmi_server_RMIDefaultSocketFactory__
#define __gnu_java_rmi_server_RMIDefaultSocketFactory__

#pragma interface

#include <java/rmi/server/RMISocketFactory.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace rmi
      {
        namespace server
        {
            class RMIDefaultSocketFactory;
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class ServerSocket;
        class Socket;
    }
  }
}

class gnu::java::rmi::server::RMIDefaultSocketFactory : public ::java::rmi::server::RMISocketFactory
{

public:
  RMIDefaultSocketFactory();
  virtual ::java::net::Socket * createSocket(::java::lang::String *, jint);
  virtual ::java::net::ServerSocket * createServerSocket(jint);
  static ::java::lang::Class class$;
};

#endif // __gnu_java_rmi_server_RMIDefaultSocketFactory__
