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

#ifndef __java_net_ProxySelector__
#define __java_net_ProxySelector__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace net
    {
        class ProxySelector;
        class SocketAddress;
        class URI;
    }
  }
}

class java::net::ProxySelector : public ::java::lang::Object
{

public:
  ProxySelector();
  static ::java::net::ProxySelector * getDefault();
  static void setDefault(::java::net::ProxySelector *);
  virtual void connectFailed(::java::net::URI *, ::java::net::SocketAddress *, ::java::io::IOException *) = 0;
  virtual ::java::util::List * select(::java::net::URI *) = 0;
private:
  static ::java::net::ProxySelector * defaultSelector;
public:
  static ::java::lang::Class class$;
};

#endif // __java_net_ProxySelector__
