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

#ifndef __gnu_javax_net_ssl_provider_SSLSocketImpl$SocketInputStream__
#define __gnu_javax_net_ssl_provider_SSLSocketImpl$SocketInputStream__

#pragma interface

#include <java/io/InputStream.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class SSLSocketImpl;
              class SSLSocketImpl$SocketInputStream;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::javax::net::ssl::provider::SSLSocketImpl$SocketInputStream : public ::java::io::InputStream
{

public: // actually package-private
  SSLSocketImpl$SocketInputStream(::gnu::javax::net::ssl::provider::SSLSocketImpl *);
public:
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual jint read();
private:
  ::java::nio::ByteBuffer * __attribute__((aligned(__alignof__( ::java::io::InputStream)))) inBuffer;
  ::java::nio::ByteBuffer * appBuffer;
  ::java::io::DataInputStream * in;
public: // actually package-private
  ::gnu::javax::net::ssl::provider::SSLSocketImpl * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_SSLSocketImpl$SocketInputStream__
