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

#ifndef __gnu_CORBA_interfaces_SocketFactory__
#define __gnu_CORBA_interfaces_SocketFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace interfaces
      {
          class SocketFactory;
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class ServerSocket;
        class Socket;
    }
  }
}

class gnu::CORBA::interfaces::SocketFactory : public ::java::lang::Object
{

public:
  virtual ::java::net::ServerSocket * createServerSocket(jint) = 0;
  virtual ::java::net::Socket * createClientSocket(::java::lang::String *, jint) = 0;
  static ::java::lang::String * PROPERTY;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_CORBA_interfaces_SocketFactory__
